La Web del Programador: Comunidad de Programadores
 
    Pregunta:  65157 - APLICAR FUNCION A VARIOS CAMPOS TEXT
Autor:  Mariana Sanchez
Hola, tengo varios formularios html de una aplicaion web, deseo validar todos los campos de texto para que no acepten caraceres especiales. Existe alguna forma de hacer esta validacion sin tener que llamar la funcion desde cada campo text. Ya que tendria que agregarle el onkeypress="return nopermite(event);" a mas de 500 campos de texto que tengo en diferentes archivos html.

Actualmente tengo:

<script type="text/javascript" language="Javascript">
function nopermite(e)
{ tecla_codigo = (document.all) ? e.keyCode : e.which;
if(tecla_codigo==8)return true;
patron =/["*']/;
tecla_valor = String.fromCharCode(tecla_codigo);
rta=patron.test(tecla_valor);
if(rta == true)
rta=false;
else
rta=true;
return rta
}
</script>
......
.....
<input type=text name=contacto onkeypress="return nopermite(event);">

Gracias

  Respuesta:  myth
var lista=document.getElementsByTagName(':text');

//con esto por ejmplo guardas en lista todos los elementos de tipo text que hay en la pagina, se puede reducir el rango de cuales text y cuales no, pero no es el tema.

lista[0].addEventListener('keypress',nopermite,false);
lista[1].addEventListener('keypress',nopermite,false);

//con esto le dices que cuando se de presione una tecla en las cajas que estan almacenados en los dos primeras posiciones de la lista se va a activar la funcion presion. o sea tiras todo en un for y cuelgas tus 500 elementos y listo.

ahora, con esto puede haber pro de compatibilidades entre anvegadores pq si la memoria no me falla en ie puede no pinchar. asi que te presento a jquery una de las tantas librerias que existen y que soluciona todo muy facil

$(":text").keypress(nopermite);

con esa linea ya esta todo soulcionado, siempre que agregues la biblioteca de jquery

saludos