2010-06-19 8 views
1
function getFieldName(e) { 
    e = e || window.event; 
    var key = e.keyCode || e.which, 
     target = e.target || e.srcElement; 

    alert(target.name); 
    return (key != 13); 
} 

J'ai la fonction ci-dessus appelé balise body onkeypress = getFieldName(event);problème avec gestionnaire d'événements

Je reçois le nom de champ souhaité, mais pas en mesure de vérifier dans IE ainsi que FF

if(target.name == 'check') { 
    // works fine in FF but in IE I'm not able 
    // to come inside this if-block, please suggest 
} 

merci

+2

Pourquoi est étiqueté comme jQuery? L'utilisez-vous? –

+0

Non en fait, je l'utilisais plus tôt avec jquery mais jquery a également des problèmes dans ce cas pour cross browser, alors s'il vous plaît suggérer de cette façon seulement – Jos

+0

Vous pouvez supprimer le tag;) –

Répondre

0

Je vois que vous avez étiqueté ce post comme jQuery ... Si vous utilisez réellement jQuery pour gérer le gestionnaire d'événements, vous pouvez utiliser e.which pour trouver la clé qui a été pressée et e.target pour trouver la cible DOM . Il s'inquiète également des choses cross-navigateur pour vous.

Pour fixer une fonction en tant que gestionnaire d'événements, vous pouvez suivre cet exemple simple: $(document).keypress(getFieldName);

+0

Non en fait, je l'utilisais plus tôt avec jquery mais jquery a également des problèmes dans ce cas pour cross browser, alors s'il vous plaît suggérer de cette manière seulement.Il serait une aide précieuse. – Jos

0

jQuery already normalizes some event properties internally, donc vous pouvez simplement utiliser event.target et event.which, vous n'avez pas besoin de vérifier pour d'autres, comme celui-ci :

$(document).keypress(getFieldName); 
function getFieldName(e) { 
    alert(e.target.name); 
    if(e.which == 13) { 
     alert("Key pressed was enter"); 
    } else { 
     alert("Key pressed was not enter"); 
    } 
} 
​ 

You can view a quick demo here

Questions connexes