En mi código, tengo un HTML <input> que toma números y tiene la siguiente función vinculada al atributo onclick :
function checkValue() { let sender = document.getElementById("articoli-quantita-uscita"); let min = sender.min; let max = sender.max; let value = parseInt(sender.value); if (value>max) { sender.value = max; } else if (value<min) { sender.value = min; } } <input class="form-control" type="number" id="articoli-quantita-uscita" name="articoli-quantita-uscita" value="1" onclick="checkValue()">Tengo la función colocada en una etiqueta en la parte superior de mi cuerpo.
Esta función toma el valor de entrada y lo transforma al mínimo o al máximo si el usuario ingresa manualmente (desde el teclado y no desde las flechas de entrada) un valor mayor que el máximo o menor que el mínimo.
Incluso si he usado este fragmento de código en otro elemento de mi aplicación web y siempre funcionó, parece que ahora no funciona y, de hecho, el error que produce es que:
Además, configuro el máximo y el mínimo mediante programación en algún punto del código a partir de los datos que recibo del servidor, registro el máximo después de configurarlo y muestra el valor correcto.
No entiendo por qué en esta página HTML (que es muy similar a las demás) no funciona, mientras que en otras páginas HTML de mi proyecto hace lo que se supone que debe hacer.
Puede usar el método addEventListener para adjuntar el detector de eventos directamente en lugar de usar javascript en línea.
También debe escuchar cuando el usuario cambia la entrada en lugar de cuando hace clic en ella; de lo contrario, es posible que su validación no se aplique en algunas situaciones.
El evento de change es bueno para hacer eso.
let sender = document.getElementById("articoli-quantita-uscita"); sender.addEventListener("input", function (event){ let min = sender.min; let max = sender.max; let value = parseInt(sender.value); if (value > max) { sender.value = max; } else if (value < min) { sender.value = min; } }); <input class="form-control" type="number" id="articoli-quantita-uscita" name="articoli-quantita-uscita" value="1" min="0" max="10" style="width: 200px" >Cámbielo de onclick() a onchange().