una teclado tecla simular retroceso presionar evento ejemplos bloquear jquery validation keypress

teclado - jquery-validar caracteres al presionar teclas



simular presionar tecla jquery (7)

Bueno, la respuesta del patricio elimina el carácter si es incorrecto, para evitar que el personaje se inserte en el campo.

$("#field").keypress(function(e) { // Check if the value of the input is valid if (!valid) e.preventDefault(); });

De esta manera, la carta no llegará a textarea

Tengo un campo de texto de formulario en el que quiero permitir solo números y letras. (Es decir, no # $ !, etc. ...) ¿Hay alguna manera de arrojar un error y evitar que la pulsación de tecla emita realmente algo si el usuario intenta usar cualquier caracter que no sean números y letras? He estado tratando de encontrar un complemento, pero realmente no he encontrado nada que lo haga ...


Descubrí que la combinación de validación en keypress y keyup brinda los mejores resultados. La clave es imprescindible si desea manejar el texto copiado. También es una trampa en caso de problemas de navegador cruzado que permiten valores no numéricos en su cuadro de texto.

$("#ZipCode").keypress(function (event) { var key = event.which || event.keyCode; //use event.which if it''s truthy, and default to keyCode otherwise // Allow: backspace, delete, tab, and enter var controlKeys = [8, 9, 13]; //for mozilla these are arrow keys if ($.browser.mozilla) controlKeys = controlKeys.concat([37, 38, 39, 40]); // Ctrl+ anything or one of the conttrolKeys is valid var isControlKey = event.ctrlKey || controlKeys.join(",").match(new RegExp(key)); if (isControlKey) {return;} // stop current key press if it''s not a number if (!(48 <= key && key <= 57)) { event.preventDefault(); return; } }); $(''#ZipCode'').keyup(function () { //to allow decimals,use/[^0-9/.]/g var regex = new RegExp(/[^0-9]/g); var containsNonNumeric = this.value.match(regex); if (containsNonNumeric) this.value = this.value.replace(regex, ''''); });


La extensión de jquery anterior (ForceAlphaNumericOnly) es buena, pero aún permite el paso de los siguientes caracteres !@#$%^&*()

En mi Mac, cuando presiona la tecla Mayús (código clave 16 ) y luego 1 , ! ingresa ! pero el código clave es 49 , el código clave para 1 .


Puedes probar esta extensión:

jQuery.fn.ForceAlphaNumericOnly = function() { return this.each(function() { $(this).keydown(function(e) { var key = e.charCode || e.keyCode || 0; // allow backspace, tab, delete, arrows, letters, numbers and keypad numbers ONLY return ( key == 8 || key == 9 || key == 46 || (key >= 37 && key <= 40) || (key >= 48 && key <= 57) || (key >= 65 && key <= 90) || (key >= 96 && key <= 105)); }) }) };

Uso:

$("#yourInput").ForceAlphaNumericOnly();


$(''#yourfield'').keydown(function(e) { // Check e.keyCode and return false if you want to block the entered character. });


$(''input'').keyup(function() { var $th = $(this); $th.val( $th.val().replace(/[^a-zA-Z0-9]/g, function(str) { alert(''You typed " '' + str + '' "./n/nPlease use only letters and numbers.''); return ''''; } ) ); });

EDITAR:

Aquí hay otras buenas respuestas que evitarán que se produzca la entrada.

He actualizado el mío ya que también quería mostrar un error. El reemplazo puede tomar una función en lugar de una cadena. La función se ejecuta y devuelve un valor de reemplazo. He agregado una alert para mostrar el error.

http://jsfiddle.net/ntywf/2/


$(document).ready(function() { $(''.ipFilter'').keydown((e) => { if ($.inArray(e.keyCode, [46, 8, 9, 27, 13, 110, 190]) !== -1 || (e.keyCode === 65 && (e.ctrlKey === true || e.metaKey === true) || e.keyCode === 67 && (e.ctrlKey === true || e.metaKey === true) || e.keyCode === 86 && (e.ctrlKey === true || e.metaKey === true) || e.keyCode === 82 && (e.ctrlKey === true || e.metaKey === true)) || (e.keyCode >= 35 && e.keyCode <= 40 )) { return; } if ((e.shiftKey || (e.keyCode < 48 || e.keyCode > 57)) && (e.keyCode < 96 || e.keyCode > 105)) { e.preventDefault(); } }); });