2010-06-17 17 views

Respuesta

6

Si usted tiene el cuadro de texto a continuación, usted tiene que controlar el evento onkeypress

<input type='text' onkeypress='keypresshandler(event)' /> 

Puede utilizar la siguiente función para restringir los usuarios

function keypresshandler(event) 
    { 
     var charCode = event.keyCode; 
     //Non-numeric character range 
     if (charCode > 31 && (charCode < 48 || charCode > 57)) 
     return false; 
    } 
+0

Lo hacemos así :) – Znarkus

+0

Intenté este enfoque, y encontré que necesitaba usar onkeypress = 'return keypresshandler (event)' para que funcione. – Bill

14

Usted puede hacer esto a través de JavaScript (por lo si javascript está desactivado, no podrá restringirlo)

<input type="text" onkeyup="this.value = this.value.replace(/[^a-z]/, '')" /> 

This wil Lo restrinjo a solo caracteres a-z. Pedido regular expressions para ver lo que puede hacer

+7

Recuerde que este código solo se ejecuta en el lado del cliente. La secuencia de comandos del servidor debe estar preparada para manejar ** cualquier ** entrada y rechazar caracteres no válidos. –

+1

Esto necesita una bandera global en la expresión regular. Esto se debe a que se puede mantener presionada una tecla y hacer que confíe muchos eventos de tecla abajo (y agregar muchos números) antes del lanzamiento, momento en el que solo se produce 1 evento de tecla arriba ... lo que significa que solo uno de los muchos caracteres no deseados posiblemente borrarse ya que sin un indicador global solo reemplaza 1 por llamada. –

1
function isNumberKey1(evt) 
{ 
     var charCode = (evt.which) ? evt.which : event.keyCode; 
     if (char!=8(charCode < 65 || charCode > 106)) 
     return false; 

     return true; 
} 
+0

Agregue alguna descripción a su código. ¿Por qué su solución es mejor que otras soluciones publicadas? – Artemix

2

Aunque todavía es posible, con HTML5 no hay necesidad real de utilizar una solución basada en JavaScript para este requisito.

<input type="text" name="text" pattern="[a-z0-9._%+-][email protected][a-z0-9.-]+\.[a-z]{2,3}$"> restringirá los caracteres permitidos de acuerdo con ese patrón RegExp (en este caso: direcciones de correo electrónico de aspecto válido).

El atributo title se usará como advertencia/notificación cuando el usuario intente enviar los datos que no coincidan con el requisito.

<form action="/add_country.php"> 
    Country code: <input type="text" name="country_code" pattern="[A-Za-z]{3}" title="Three letter country code"> 
    <input type="submit"> 
</form> 

Consulte el documentation on HTML input element para obtener más información. No todos los navegadores lo soportan igual de bien (como Safari).

0

La respuesta de Ben Rowe es de hecho la manera de abordarla. Sin embargo, el personaje aparecerá en el cuadro de texto antes de que se elimine. Usted puede evitar que mediante el uso oninput en lugar de onkeyup:

<input type="text" oninput="this.value = this.value.replace(/[^a-z]/, '')" /> 
Cuestiones relacionadas