Foros del Web » Programando para Internet » Javascript »

AddEventListener y cancelar evento

Estas en el tema de AddEventListener y cancelar evento en el foro de Javascript en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 06/11/2008, 12:55
 
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
  #2 (permalink)  
Antiguo 06/11/2008, 13:04
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: AddEventListener y cancelar evento

Es que en ese caso solo estás deteniendo la propagación del evento, para detener la acción debería ser event.preventDefault().
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 06/11/2008, 14:32
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 19 años, 11 meses
Puntos: 834
Respuesta: AddEventListener y cancelar evento

Y event.returnValue=false para explorer:
Código PHP:
function cancelEvent(e) {
    if (!
ewindow.event;
    if (
e.preventDefault) {
        
e.preventDefault();
    } else {
        
e.returnValue false;
    }

  #4 (permalink)  
Antiguo 07/11/2008, 02:49
 
Fecha de Ingreso: noviembre-2007
Mensajes: 7
Antigüedad: 16 años, 5 meses
Puntos: 0
De acuerdo Respuesta: AddEventListener y cancelar evento

Muchisimas gracias, funciona de lujo.

Soys unos cracks.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:20.