inicialmente validaba perfectamente las teclas presionadas en un text de esta forma clasica que muchos usan:
Código HTML:
<input type="text" name="txtImporte" onKeyPress="return ValidarTecla(event, '0123456789-,');" value="">
Código:
Este codigo impedia ingresar teclas que no esten dentro del parametro patron que se enviaba en la funcion ValidarTeclafunction ValidarTecla(evento, patron) { if (evento.keyCode) return true; } else { cadena=String.fromCharCode(evento.which); if (patron.indexOf(cadena) != -1) return true; else return false; } }
Pero ahora necesito asignar eventos dinamicamente a los elementos de una pagina usando el siguiente codigo JavaScript:
Código:
function ValidarTecla(evento, patron) { if (evento.keyCode) return true; } else { cadena=String.fromCharCode(evento.which); if (patron.indexOf(cadena) != -1) return true; else return false; } } function addEvent(obj, evType, fn, useCapture) { if (obj.addEventListener) { obj.addEventListener(evType, fn, useCapture); return true; } else if (obj.attachEvent) { var r = obj.attachEvent("on"+evType, fn); return r; } else { alert("el evento no puede ser asignado"); } } addEvent(txtImporte, "keypress", ValidarTecla, false);
y esto ya no funciona como en el primer ejemplo, ya que no cancela la inclusion de la tecla que no este dentro del patron, el false que devuelve la funcion ValidarTecla no "se carga" de vuelta en el evento para que sea cancelado. Ademas ya no se como mandar ni el objeto event correspondiente ni el patron con el que se debe controlar las teclas presionadas.
Como podria adaptar el codigo que uso para que funcione como en el primer caso? Es posible que haya alguna forma, algo no documentado que no puedo encontrar, etc.
En Visual Basic por ejemplo, el objeto evento tiene una propiedad Cancel que uno puede ponerle True o False para cancelar. Una propiedad asi aparentemente no existe en el objeto evento del JavaScript.
Es necesario en mi aplicacion poder asignar y desasignar dinamicamente los eventos a los controles.
Gracias