¿Cómo puedo evitar que los usuarios ingresen caracteres especiales en el cuadro de texto? Quiero que solo se ingresen los números y los alfabetos (mecanografiados/pegados).Validación de JavaScript: caracteres especiales de bloque
¿Alguna muestra?
¿Cómo puedo evitar que los usuarios ingresen caracteres especiales en el cuadro de texto? Quiero que solo se ingresen los números y los alfabetos (mecanografiados/pegados).Validación de JavaScript: caracteres especiales de bloque
¿Alguna muestra?
Tienes dos métodos para esto:
Sugeriría el segundo método porque es menos irritante. Recuerde también marcar onpaste
. Si solo usa la tecla presionar, entonces podemos copiar y pegar caracteres especiales así que use onpaste
para restringir Pegar caracteres especiales
Además, también sugiero que reconsidere si realmente desea evitar que los usuarios ingresen caracteres especiales. Porque muchas personas tienen $, #, @ y * en sus contraseñas.
Supongo que esto podría ser para evitar la inyección SQL; de ser así: es mejor que maneje los cheques del lado del servidor. O mejor aún, escape de los valores y guárdelos en la base de datos.
Básicamente, simplemente use un controlador onkeypress apropiado. Consulte http://www.qodo.co.uk/blog/javascript-restrict-keyboard-character-input/ y el ejemplo http://www.qodo.co.uk/wp-content/uploads/2008/05/javascript-restrict-keyboard-character-input.html
Le ayudaría ... suponga que tiene un formulario con el formato "formname" y un cuadro de texto con el nombre "txt". entonces usted puede utilizar siguiente código para permitir que sólo los valores aphanumeric
var checkString = document.formname.txt.value;
if (checkString != "") {
if (/[^A-Za-z\d]/.test(checkString)) {
alert("Please enter only letter and numeric characters");
document.formname.txt.focus();
return (false);
}
}
Prueba con esto, esta función permite alfanuméricos y espacios:
function alpha(e) {
var k;
document.all ? k = e.keyCode : k = e.which;
return ((k > 64 && k < 91) || (k > 96 && k < 123) || k == 8 || k == 32 || (k >= 48 && k <= 57));
}
en su html:
<input type="text" name="name" onkeypress="return alpha(event)"/>
Para los caracteres especiales:
var iChars = "[email protected]#$%^&*()+=-[]\\\';,./{}|\":<>?";
for (var i = 0; i < document.formname.fieldname.value.length; i++) {
if (iChars.indexOf(document.formname.fieldname.value.charAt(i)) != -1) {
alert ("Your username has special characters. \nThese are not allowed.\n Please remove them and try again.");
return false;
}
}
creo comprobar keypress
eventos es no completamente adecuado, ya que creo que los usuarios pueden copiar/pegar en cuadros de entrada sin activar una tecla.
Así que onblur
es probablemente algo más confiable (pero es menos inmediato).
Para hacer realmente seguro de caracteres que no desea que no se introducen en cajas de entrada (o áreas de texto, etc.), creo que tendrá que
keypress
(si usted quiere dar retroalimentación inmediata) yonblur
,Los ejemplos de código de las otras respuestas no tendrán ningún problema para hacer los controles del lado del cliente (sólo no depender solamente en la comprobación keypress
eventos), pero como se ha señalado en la respuesta aceptada, un servidor -el control del lado es realmente necesario.
Limitar la entrada no es necesariamente restrictivo, puede ser ingresar números telefónicos, códigos postales, fechas, etc. ¡Pero +1 al consejo de duplicar la verificación en el servidor! – PhiLho