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 plug-in, pero realmente no he encontrado nada que haga esto ...jquery - validar caracteres al presionar teclas?
Respuesta
$('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 ''; }));
});
EDIT:
Hay algunas otras buenas respuestas aquí que evitará que la entrada tenga lugar.
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 un alert
para mostrar el error.
+1 funciona muy bien. http://jsfiddle.net/ntywf/ Aunque tengo una * sensación *, el OP podría querer espacios también permitidos. – karim79
@ karim79 - Gracias por agregar jsfiddle. Realmente debería hacer eso más a menudo. – user113716
bloquea los comandos necesarios como las operaciones arriba, abajo flecha, desplazamiento y ctrl también. Cómo controlar eso –
$('#yourfield').keydown(function(e) {
// Check e.keyCode and return false if you want to block the entered character.
});
Bueno la respuesta del Patrick elimina el carácter si está mal, en realidad evitar carácter de ser insertado en el uso 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 área de texto
Puede 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();
Solo pensé en esta solución: podría haber un problema si estás insertando el texto del búfer.Si el usuario presiona ctrl + v, espera que su texto se inserte en el campo si es válido. Este enfoque podría no ser capaz de manejar esto. Sin embargo, tengo que probarlo. – Juriy
La extensión por encima de jQuery (ForceAlphaNumericOnly) es bueno, pero todavía permite los siguientes personajes a través de [email protected]#$%^&*()
en mi Mac, cuando se pulsa la tecla cambio (código clave 16
) y luego , ingresa !
pero el código clave es 49
, el código clave para 1
.
Encontré que la combinación de validación en keypress y keyup da 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, '');
});
En Chrome al pegar (ctrl-v), la tecla no parece tener ningún valor para este valor. Por lo tanto, la expresión regular nunca coincide. En Firefox observo que End, Delete, Home, Page Up y Page Down no funcionan en el campo. – peater
$(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();
}
});
});
- 1. Cómo interceptar teclas especiales (alt/ctrl) presionar?
- 2. jQuery UI Diálogo + Validar
- 3. validar dos campos con jQuery Validar
- 4. Cómo simular clics del mouse y presionar teclas en F #
- 5. Android: cómo leer la configuración del sistema para la vibración al presionar las teclas
- 6. "de forma segura" ¿finaliza un programa C++ en ejecución al presionar teclas?
- 7. Haga que Visual Studio comprenda CamelCase al presionar las teclas ctrl y del cursor
- 8. Validar campo de texto numérico en jQuery
- 9. Jquery validar dependen campo
- 10. Chosen.js y validar jquery
- 11. jQuery Validar obligatorio Seleccionar
- 12. Al presionar Enter Always Submits Form
- 13. jQuery validar marcar al menos una casilla de verificación
- 14. jQuery código desencadenado dos veces para bind ('cambio de tecla') al presionar la tecla
- 15. Cómo borrar jquery validar errores
- 16. URL caracteres válidos. java para validar
- 17. JQuery validar dinámicamente agregar reglas
- 18. Validar subconjunto de un formulario utilizando jQuery Validar complemento
- 19. Formulario no enviado al presionar enter
- 20. JQuery Validar: Validar un formulario oculto (posible error)
- 21. jquery validar con varias reglas
- 22. jQuery validar cuadro de selección
- 23. jQuery plugin en validar DIV
- 24. jQuery Plugin Validar - Validar Campo oculto por Nombre
- 25. JQuery Esc Presión de tecla presionar
- 26. ¿Qué caracteres son válidos en las teclas hash?
- 27. jQuery para validar HTML en un TextArea
- 28. Git: Ignorando ciertos commits al presionar
- 29. Errores de Git al presionar en Heroku
- 30. Ocultar UITabBar al presionar un UIView
Muy similar a: Esta http://stackoverflow.com/questions/995183/how-to-allow-only-numeric-0-9-in-html-inputbox-using-jquery – ThiefMaster
no evitará que los caracteres no alfanuméricos se peguen con el menú contextual (clic derecho y pegar). Pruébalo en http://jsfiddle.net/ntywf –
el es un complemento que lo hace muy bien: http://digitalbush.com/projects/masked-input-plugin/ – meo