Ver Mensaje Individual
  #1 (permalink)  
Antiguo 06/11/2008, 12:55
Xanny
 
Fecha de Ingreso: noviembre-2007
Mensajes: 7
Antigüedad: 16 años, 5 meses
Puntos: 0
AddEventListener y cancelar evento

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(evTypeonlyNumberstrue);
}
else if (
elm.attachEvent) {
    var 
elm.attachEvent('on' evTypeonlyNumbers);
}
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 != && 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 (!
ewindow.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.

Última edición por Xanny; 06/11/2008 a las 13:01