2013-07-30 13 views

Répondre

3

Oui - vous pouvez écouter tout état de cause sur tout élément dans le DOM. Découvrez this fiddle comme point de départ. Voici un full list of mouse events et keyboard events que vous pouvez écouter.

HTML

<select class="my-select-1"> 
    <option value="1">First</options> 
    <option value="2">Second</options> 
</select> 

<select class="my-select-2"> 
    <option value="1">A choice</options> 
    <option value="2">Another choice</options> 
</select> 

jQuery

$(document).ready(function() { 

    $(".my-select-1").on("click", function(event){ 
     alert('Do something - click event'); 
    }); 

    $('.my-select-2').on('keypress', function(e) { 
     var code = (e.keyCode ? e.keyCode : e.which); 
     if(code == 13) { //Enter keycode 
      alert('Do something - enter key press'); 
     }  
    }); 

}); 

Dans l'exemple ci-dessus, $(".my-select-1) est le sélecteur, il pourrait être quelque chose (un ID, un type d'élément, etc.). Plus d'informations sur les sélecteurs here. La partie suivante, .on("mousedown", associe une fonction de gestionnaire d'événement pour un ou plusieurs événements aux éléments sélectionnés - dans ce cas, un seul événement, mousedown. Plus d'infos sur le here.

Le deuxième exemple, est un peu plus de fantaisie car nous devons déterminer quelle touche a été enfoncée, mais autre que celle utilise le même concept. Vous pouvez trouver une très longue discussion à ce sujet sur this post, mais s'il vous plaît noter qu'à partir de 1.7 on est la méthode préférée (pas bind).

+0

Je jure, je pensais que le clic est arrivé sur le premier clic de la sélection ... Eh bien cela a résolu ma question, je vais utiliser ceci avec éventuellement la réponse @ undefined, joignant les deux déclarations 'on' en un – Ascherer

+0

Ouais - j'allais juste dire si vous donniez un exemple de votre code cela nous aiderait à vous donner la meilleure suggestion. Selon la façon dont vous vous en approchez, la méthode @undefined fonctionnerait également - en plaçant un commutateur ou si des instructions à l'intérieur de la fonction suggèrent d'avoir différents comportements pour différents événements. – MaxPowers

+0

ouais, c'est l'idée. Merci – Ascherer

0

Vous pouvez utiliser onchange événement, quelque chose comme ceci:

$(document).on('change','#your_select',function() { 
    //do something 
}) 
+1

OP veut être capable de répondre à des modes de changement spécifiques; I.e clavier vs souris. Plutôt que de simplement répondre à la totalité des changements –

1

Si vous voulez connaître le type de l'événement, vous pouvez simplement utiliser la propriété type de l'objet event:

$('select').on('change keyup ...', function(event) { 
    var type = event.type; 
    // ... 
}); 
+0

Existe-t-il une liste définie de possibilités 'event.type'? – Ascherer

+0

Oui - une longue liste trouvée à http://api.jquery.com/category/events/ – MaxPowers

+0

ah. Étrange, ils ne semblent pas mentionner d'alias. par exemple. Le flou a en fait un type de "mise au point" – Ascherer

Questions connexes