2009-08-04 7 views
0

J'ai créé un nouveau YAHOO.util.KeyListener à attacher à un élément spécifique et ai également créé un nouveau YAHOO.util.KeyListener à attacher au document entier. Ils sont tous deux associés à la touche "Entrée" (touches 13).stopPropagation ne fonctionne pas pour KeyListener dans YUI 2.7

Dans la fonction de gestionnaire pour l'auditeur attaché à l'élément spécifique, j'ai le code suivant:

  getDetailsLocalnameInput = function(e) { 
        getDetails(localnameInput.value); 
        YAHOO.util.Event.preventDefault(e); 
        YAHOO.util.Event.stopPropagation(e); 
      }; 

Pourtant, l'événement de la keypress continue de se propager à l'auditeur clé attachée au document entier . Je ne veux pas que le gestionnaire de l'écouteur de touches attaché à l'ensemble du document soit éjecté. Je suis sûr que les deux gestionnaires sont appelés, mais ne veulent que le gestionnaire attaché à l'élément spécifique à exécuter.

Est-il correct d'utiliser YAHOO.util.Event.stopPropagation avec YAHOO.util.KeyListener?

Y a-t-il une autre façon de contourner le problème de la propagation de l'événement de pression de touche?

J'ai également essayé d'utiliser la fonction YAHOO.util.Event.stopEvent et de définir e.cancelBubble sans succès.

J'ai testé tout cela avec Firefox 3.5. Je ne peux pas faire fonctionner stopPropagation().

Répondre

0

Essayez ceci:

getDetailsLocalnameInput = function(e) { 
    getDetails(localnameInput.value); 

    if(window.event){ 
     e.cancelBubble=true;//In IE 
    }else{ 
     evt.stopPropagation();//in Others 
    } 

    //YAHOO.util.Event.preventDefault(e); 
    //YAHOO.util.Event.stopPropagation(e); 
}; 
+0

'YAHOO.util.Event.stopPropagation' fait la même chose. Si ça ne marche pas, ça non plus. – Nate