Buenos dias a todos,
tengo un pequeño problema con javascript que agareceria me resolvierais.
Necesito hacer que en una caja de texto solo se puedan introducir numeros. He seguido tanto el faq 37 como otros tutoriales y ejemplos.
El problema es que yo lo quiero utilizar de forma limpia y sin añadir el onKeyPress en la caja de texto, asi que utilizo este metodo:
Código PHP:
var evType='keypress';
var elm=document.getElementById('cajaTexto');
//Para compatibilidad con diferentes navegadores
if (elm.addEventListener) {
elm.addEventListener(evType, onlyNumbers, true);
}
else if (elm.attachEvent) {
var r = elm.attachEvent('on' + evType, onlyNumbers);
}
else {
elm['on' + evType] = onlyNumbers;
}
function onlyNumbers(e){
var key;
if (window.event){
key = window.event.keyCode;
}
else if (e) {
key = e.which;
}
if ((key < 48 || key > 57) && key != 8 && key != 37 && key != 39 && key != 46 && key != 9){//Es letra
stopEvent(e);
//alert("letra "+key);
}else{
//alert("numero "+key);
}
}
La tecla la captura perfectamente (ya que los alert comentados devuelven el codigo de la tecla) pero lo que no me funciona es ninguno de los metodos para evitar que se introduzca la letra.
El metodo sugerido por el faq es
Código PHP:
window.event.keyCode=0;
Y otro metodo que encontre en una web para cancelar los eventos es
Código PHP:
function stopEvent(e) {
if (!e) e = window.event;
if (e.stopPropagation) {
e.stopPropagation();
} else {
e.cancelBubble = true;
}
}
Como he dicho me detecta la tecla presionada pero no consigo evitar que se introduzca en la caja, ni modificar su valor, ni nada.
Así que si se os ocurre algo os lo agradeceré eternamente.