2009-01-23 7 views
3

J'essaie de faire quelque chose quand un utilisateur sélectionne une option dans une boîte de sélection - Aussi simple que cela puisse être? J'utilise JQuery 1.3.1 pour enregistrer un gestionnaire de clic avec l'ID de la zone de sélection. Tout allait bien jusqu'à ce que j'ai testé en utilisant Chrome et Safari et j'ai trouvé que cela ne fonctionnait pas.L'événement JQuery Click n'est pas déclenché dans Safari?

  1. Firefox 3.05 - OUI
  2. IE 7.0.5730.13 - OUI
  3. IE6Eolas - OUI
  4. Sarafi 3.2.1 - NO
  5. Chrome 1.0.154.43 - NO

Voir sous le code:

<html> 
<head> 
    <script language="javascript" type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquery.min.js"></script> 
    <script language="javascript"> 
    $(document).ready(function(){ 
     $('#myoption').click(function() { alert('Select Dropdown was clicked: '+ $('#myoption').val()); }); 
    });  
    </script> 
</head> 
<body> 
    <select id="myoption"> 
    <option value="A">A</option> 
    <option value="B">B</option> 
    </select> 
</body> 
</html> 

Quelqu'un sait ce que je devrais faire pour que cela fonctionne? L'alerte est finalement déclenchée, mais seulement après un double-clic sur la boîte de sélection?

Répondre

5

J'ai trouvé mon problème. Pour les boîtes Select, vous devez enregistrer un gestionnaire pour un événement "change" plutôt qu'un événement "click". Il est étrange que Firefox et IE fonctionnent avec l'événement click.

Pour résumer, le code suivant fonctionne sur tous les navigateurs:

<html> 
<head> 
    <script language="javascript" type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquery.min.js"></script> 
    <script language="javascript"> 
    $(document).ready(function(){ 
     $('#myoption').change(function() { alert('Select Dropdown was clicked: '+ $('#myoption').val()); }); 
    });   
    </script> 
</head> 
<body> 
    <select id="myoption"> 
    <option value="A">A</option> 
    <option value="B">B</option> 
    </select> 
</body> 
</html> 
+0

Je pense que "changer" ne fonctionne pas dans IE. IIRC, il n'est pas déclenché avant que l'élément ne perd son focus. – Tomalak

+0

changer sur une sélection fonctionne bien dans – redsquare

+0

Oui, changer sur certaines œuvres dans IE - la version en direct du code que j'ai utilisé peut être vu dans la boîte de sélection à http://www.peopleperhour.com/reg_sup.php (quand "autre" est sélectionné, une boîte de texte s'affiche pour demander plus d'informations). – Tom

1

Safari et Chrome sont les deux navigateurs webkit. Webkit utilise les éléments déroulants natifs de votre système d'exploitation au lieu d'implémenter des listes déroulantes et, malheureusement, les listes déroulantes natives ne prennent pas en charge les événements de clic. Pour la même raison, ils ne supportent pas le CSS pour les éléments d'option ou d'autres astuces.

Le seul moyen de faire fonctionner les navigateurs est de les implémenter manuellement en utilisant un <ul> et beaucoup de javascript.

Questions connexes