Evitar que el usuario escriba la input al valor máximo

Me gustaría que el usuario no pueda escribir más si el valor es más de 100. Hasta ahora tengo lo siguiente leyendo diferentes publicaciones:

$('.equipCatValidation').keyup(function(e){ if ($(this).val() > 100) { e.preventDefault(); } }); 

Para confirmar, quiero el valor, no la longitud de la cadena, y no puede ser superior a 100.

Sin embargo, esto no impide inputs adicionales en el campo. Qué me estoy perdiendo.

Solución: http://jsfiddle.net/9TP3e/

4 Solutions collect form web for “Evitar que el usuario escriba la input al valor máximo”

La verificación de la tecla es demasiado tarde, el evento de agregar el personaje ya ha sucedido. Necesitas usar la tecla de configuration. Pero también quiere asegurarse de que el valor no sea> 100, por lo que también necesita usar la function de keyboard para permitir que js verifique el valor también.

También debe permitir que las personas eliminen el valor; de lo contrario, una vez que sea> 100 no se podrá cambiar nada.

 $('.equipCatValidation').on('keydown keyup', function(e){ if ($(this).val() > 100 && e.keyCode != 46 // delete && e.keyCode != 8 // backspace ) { e.preventDefault(); $(this).val(100); } }); 

http://jsfiddle.net/EBs33/1/

Básicamente, los events de pulsación de tecla se disparan antes de aceptar el valor actual. Por lo tanto, cuando presiona cualquier tecla, el evento de pulsación de tecla se suscribe, pero no obtiene el valor / resultado actualizado de la tecla presionada recientemente. Entonces, para get la última tecla presionada, podemos usar el método fromCharCode y concaturarlo con el valor que obtenemos del textbox. Eso es,

HTML:

 <input id="inputBox" type="text" /> 

jQuery:

 $("#inputBox").on("keypress", function(e){ var currentValue = String.fromCharCode(e.which); var finalValue = $(this).val() + currentValue; if(finalValue > 100){ e.preventDefault(); } }); 

jsFiddle

¿Tal vez keydown lugar de keyup ?

 <!DOCTYPE html> <html> <head> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <script> $(function() { $('.equipCatValidation').keydown(function(e){ if ($(this).val() > 100) { e.preventDefault(); } }); }) </script> </head> <body> <input type="text" class="equipCatValidation"> </body> </html> 

EDITAR: Aquí hay un comentario válido: evitar que el usuario ingrese la input en el valor máximo , para eludir que probablemente deba almacenar el valor anterior y restaurarlo cuando sea necesario.

Es mala IU desactivar la input si un usuario ingresa un valor incorrecto. Supongo que simplemente quiere poner un valor máximo que el usuario no puede repasar. Si es así, puede fijar el valor o utilizar el atributo max en su marcado:

  <form> <input type='number' max='100'> </form> 

Si ingresa un valor no válido, la input se volverá roja y no podrá enviar el formulario.

  • Cómo cerrar Fancybox con un enlace
  • Onclick cambia el color de background
  • marca y desmarca la checkbox en el control de repetidores usando javascript?
  • CKEditor InnerHTML error
  • Arrastrando y networkingimensionando elementos transformados CSS
  • ¿Cómo se hacen las flechas hacia arriba y hacia abajo para resaltar los elementos en una list? (jQuery)
  • jQuery: el contador de char no funciona con el evento de pegar
  • iterar a través de un map en javascript
  • Javascript tiene muchos buenos JS marco (como Node.js AngularJS Vue.js React.js) es el mejor lenguaje de script.