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.

  • Enviar datos de formulario con jquery ajax json
  • cómo hacer perezoso cualquier cosa
  • Cómo get el evento de carga anterior en el complemento de elfinder (un complemento de administrador de files)
  • Mostrar publicidad mientras se carga el juego
  • El evento Keydown no se dispara al presionar escape en pantalla completa en Chrome / Firefox
  • Enlace a listo y cambio de tamaño al mismo time usando jQuery .on ()
  • Jquery: agregue text variable al control deslizante
  • Angularjs con jquery.chosen - ngModel no se actualiza
  • Javascript tiene muchos buenos JS marco (como Node.js AngularJS Vue.js React.js) es el mejor lenguaje de script.