javascript - getelementbyid value



événement n'est pas défini dans Mozilla Firefox pour la fonction javascript? (2)

Dans FF / Mozilla, l'événement est transmis à votre gestionnaire d'événements en tant que paramètre. Utilisez quelque chose comme ce qui suit pour contourner l'argument d'événement manquant dans IE.

 function onlyNumeric(e)
 {
     if (!e) {
        e = window.event;
     }

     ...
 }

Vous constaterez qu'il existe également d'autres différences entre les deux. Ce lien contient des informations sur la façon de détecter quelle touche est enfoncée de manière croisée.

https://src-bin.com

function onlyNumeric() {   
    if (event.keyCode < 48 || event.keyCode > 57) {
        event.returnValue = false; 
    }

}

onkeypress=onlyNumneric();

Dans IE, ce code fonctionne bien. Cependant, dans Mozilla Firefox, l'événement est une erreur indéfinie.


Answer #1

Ou tout simplement, nommez le paramètre event et il fonctionnera dans tous les navigateurs. Voici un exemple de jQueryish:

  $('#' + _aYearBindFlds[i]).on('keyup', function(event) {
  if(! ignoreKey({szKeyCodeList: gvk_kcToIgnore, nKeyCode: event.keyCode }))  this.value = this.value.replace(/\D/g, '');
  });

Cet exemple permet de saisir uniquement des chiffres pour les champs d'année (à l'intérieur de chaque sélecteur de boucle) où ingoreKey () prend une liste / tableau keyCode et compare l'événement keyCode et détermine s'il doit être ignoré avant de déclencher l'événement bind.

Les clés que j'utilise généralement pour les masques / autres sont la flèche, le retour arrière, les tabulations, selon le contexte / le comportement souhaité.

Vous pouvez également utiliser event.which au lieu de event.keyCode dans la plupart des navigateurs, au moins lorsque vous utilisez jQuery qui dépend de event.qui permet de normaliser les événements key et mouse.

Je ne sais pas exactement ce qui se passe sous les couvertures dans les moteurs js, mais il semble que Mozilla FF respecte une portée plus stricte, dans laquelle d'autres navigateurs peuvent automatiquement traiter la portée window.event.keyCode eux-mêmes lorsque l'événement n'est pas explicitement passé à une fonction ou une fermeture.

Dans FF, vous pouvez aussi adresser l'événement par window.event (comme montré dans quelques exemples ici) qui supporterait cette pensée.





cross-browser