<select id="single">
<option>Single</option>
<option>Single2</option>
</select>
<script>
$(function() {
$(":input#single").change(function(){
/* This logic is not being run when value is set by val(), but does run when user selects a value with their mouse */
}
});
$("#single").val("Single2");
</script>
Réponses
Trop de publicités?Je crois que vous pouvez déclencher manuellement l'événement de changement avec trigger()
:
$("#single").val("Single2").trigger('change');
Mais pourquoi il ne se déclenche pas automatiquement, je n'ai aucune idée.
Aussi loin que je peux lire dans l'API. L'événement n'est déclenché lorsque l'utilisateur clique sur une option.
Pour sélectionner les cases, les cases à cocher, et les boutons radio, l'événement est déclenché immédiatement lorsque l'utilisateur effectue une sélection avec la souris, mais pour l' d'autres types d'éléments de l'événement est différé jusqu'à ce que l'élément perd le focus.
Parce que c'est pas comment jQuery est défini à travailler; il n'est pas simplement parce qu'il ne veut pas. Pour moi qui fait sens, parce que le navigateur lui-même ne se déclenche pas "modifier" si vous directement mettre à jour l'attribut "value" d'un élément d'entrée (ou textarea ou quoi que ce soit).
Si vous voulez ce genre de comportement, vous pouvez toujours écrire votre propre plugin.