2009-09-01 6 views
1

J'ai plusieurs champs, généralement entrer sera appuyé sur l'un des deux principaux. Je veux savoir quel champ a été enfoncé, comment faire? (Je ne sais pas beaucoup JS)comment vérifier quand le champ enter/return a été activé?

Doublons possibles

+0

Aucun des dups ne sont vraiment dups: 756786 et 1235716 sont sur le blocage (ce qui n'est pas précisément la question), 1248100 est jquery spécifique alors que cette question est de quelqu'un qui n'utilise pas jquery, et 1364780 est celui-ci . – Guss

Répondre

2

Check for enter et mis un peu caché f ield (exemple utilise JQuery):

$('#input_text').keyup(function(e) { 
    //alert(e.keyCode); 
    if(e.keyCode == 13) { 
     alert('Enter key was pressed.'); 
    } 
}); 
6

son simple d'ajouter un événement « onkeypress » à chacun des champs, puis dans le gestionnaire d'événements pour examiner le code d'activation qui est attaché à l'événement. Par exemple, considérez le code suivant:

form.elements['fieldone'].onkeypress = function(evt) { 
    if (window.event) evt = window.event; // support IE 
    if (evt.keyCode == 13) alert("Enter was pressed!"); 
    return true; 
} 

S'il vous plaît noter que dans la plupart des navigateurs, en appuyant sur ENTRER dans un champ de formulaire afficherait cette forme. Si vous ne voulez pas que cela se produise, vous pouvez simplement retourner false à partir du gestionnaire onkeypress et cela indiquerait au navigateur d'ignorer cette clé.

+0

Je le veux pour poster mais je veux savoir quel champ a été frappé. Si je change une valeur de forme, cela va-t-il s'exécuter avant de poster les données? –

+0

En effet, il le fera. – Guss

1

Incluez cela dans votre page, il devrait se déclencher automatiquement lorsque vous appuyez sur une touche et vous dire quel élément html avait le focus quand il s'est produit.

<script> 
document.onkeypress = KeyPressed; 

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

    f ((e.charCode) && (e.keyCode == 13)) 
    alert('Yay! Enter was pressed while field ' + document.activeElement.id + ' had focus!'); 
} 
</script> 
0

Vous pouvez vérifier à partir de quel élément l'événement barboter d'utiliser quelque chose comme le

var text1 = document.getElementById('text1'); 
var text2 = document.getElementById('text2'); 
text1.onkeypress = keyPresser; 
text2.onkeypress = keyPresser; 

function keyPresser(e) { 
    // to support IE event model 
    var e = e || window.event; 
    var originalElement = e.srcElement || e.originalTarget; 

    if (e.keyCode === 13) { 
     alert(originalElement.id); 
    } 
} 

suivante Voici un Working Demo

Je vous conseille de prendre un regard sur les différences dans les événements du navigateur modèles et aussi à JavaScript discret.

+0

Les gestionnaires d'événements sont appelés dans le contexte de l'objet auquel ils sont attachés, donc si vous attachez le gestionnaire d'événements directement à la propriété onkeypress des objets recherchés, vous pouvez simplement regarder la référence 'this' et ce sera le objet où l'événement a été déclenché. – Guss

+0

dans IE, le mot-clé this dans les fonctions de l'écouteur d'événements pointe vers l'objet window, pas l'élément en cours. –

0

Utilisation event delegation pour éviter la fixation des gestionnaires d'événements à un grand nombre d'éléments:

window.onload = function() { 
    document.onkeyup = function (e) { 
    e = e || window.event; 
    var target = e.target || e.srcElement, 
     keyCode = e.keyCode || e.which; 

    if (target.tagName.toLowerCase() == 'input' && keyCode == 13) { 
     alert('Enter pressed on ' + target.id); 
    } 
    }; 
}; 
+0

Peut vouloir vérifier target.nodeName === "TEXT" aussi –

Questions connexes