2010-11-01 5 views
1

Est-il possible de déclencher un événement de modification sur un champ de sélection lorsque l'attribut selectedIndex ou val est défini avec jQuery? Je l'ai essayé et ça ne semble pas fonctionner. J'essaye de remplacer un champ choisi par un de mes propres conception. Le problème est que si j'ai joint un événement change à un champ select, lorsque l'index est modifié, il doit déclencher cet événement.Déclencher l'événement onChange après le changement de l'élément selectedIndex?

Existe-t-il un moyen de le faire?

var a = $("a"); 
 

 
$("a").on("click", function() { 
 
    
 
    $("#selectList")[0].selectedIndex = a.index($(this)); 
 
    
 
    //now fire event 
 

 
\t return false; 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<a href="#">Trigger 1</a> 
 
<a href="#">Trigger 2</a> 
 
<a href="#">Trigger 3</a> 
 

 
<select id="selectList"> 
 
    <option value="1">1</option> 
 
    <option value="2">2</option> 
 
    <option value="3">3</option> 
 
</select>

EDIT: @ xSaint32 répondu cela, en utilisant la méthode jQuery's trigger.

+1

@ Chris - J'ai eu un problème similaire. J'ai essayé d'utiliser $ ('theSelectBox'). Trigger ('change'), mais ça ne se déclencherait pas toujours. J'ai fini par lier la même fonction à l'événement click(), et j'ai déclenché à la place: $ ('theSelectBox'). Trigger ('click') – dotariel

+0

@Chris Pourriez-vous poster du code, s'il vous plait? – lonesomeday

+0

@lonesomeday: Mon code est trop long à poster dans un commentaire et ne conserve pas le formatage dans une édition. Je vais voir si je peux le couper et ajouter à un montage. –

Répondre

2

@ xSaint32 a répondu à cette question en utilisant la méthode jQuery's trigger.

var a = $("a"), 
 
    select = $("#selectList"); 
 

 
$("a").on("click", function() { 
 
    
 
    select[0].selectedIndex = a.index($(this)); 
 
    
 
    select.trigger("change"); 
 

 
    return false; 
 
}); 
 

 
select.on("change", function() { 
 
    
 
    alert("My index changed"); 
 

 
    return false; 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<a href="#">Trigger 1</a> 
 
<a href="#">Trigger 2</a> 
 
<a href="#">Trigger 3</a> 
 

 
<select id="selectList"> 
 
    <option value="1">1</option> 
 
    <option value="2">2</option> 
 
    <option value="3">3</option> 
 
</select>

Questions connexes