875 votes

jQuery obtient la valeur de la sélection onChange

J'avais l'impression que je pouvais obtenir la valeur d'une entrée de sélection en faisant ceci $(this).val(); et en appliquant le onchange au champ de sélection.

Il semblerait que cela ne fonctionne que si je fais référence à l'ID.

Comment puis-je le faire en utilisant ceci.

1699voto

thecodeparadox Points 41614

Essayez ceci.

$('select').on('change', function() {
  alert( this.value );
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<select>
    <option value="1">One</option>
    <option value="2">Two</option>
</select>

Vous pouvez également faire référence avec onchange event-

function getval(sel)
{
    alert(sel.value);
}

<select onchange="getval(this);">
    <option value="1">One</option>
    <option value="2">Two</option>
</select>

16 votes

Je sais que c'est un peu tard mais si vous utilisez le clavier (tabulation) pour naviguer dans un formulaire et que vous utilisez les flèches haut/bas pour choisir dans une liste déroulante, alors FireFox (22.0) ne déclenche pas l'événement de changement. Vous devez également lier l'appui sur la touche pour FireFox. Informations supplémentaires : jQuery 1.10.2 utilise la syntaxe $('select').on('change', function(){ /* do seomthing */ }) ;

0 votes

Pour moi, l'exemple de jQuery ne fonctionne pas, et je suis sûr que le fichier jQuery 1.11 est correctement chargé dans ma page. Dans les journaux JS de mon navigateur, j'ai obtenu ceci : has no method 'on'. Je l'ai essayé à la fois sur Firefox et Chrome, même résultat. Est-ce que c'est une utilisation standard ou est-ce que cela n'a été implémenté que dans les nouvelles versions de jquery ? Merci pour la réponse.

2 votes

@MonkeyZeus Vous n'avez pas besoin, il sera déclenché lorsque le composant perd le focus. De (méthode de changement jQuery)[ [api.jquery.com/change/]](https://api.jquery.com/change/]) "Pour les cases de sélection, 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 les autres types d'éléments, l'événement est différé jusqu'à ce que l'élément perde le focus." Et bien sûr, vous pouvez utiliser .change() à la place.

115voto

Darin Dimitrov Points 528142

J'avais l'impression que je pouvais obtenir la valeur d'une entrée select en faisant ceci $(this).val() ;

Cela fonctionne si vous vous abonnez de manière discrète (ce qui est l'approche recommandée) :

$('#id_of_field').change(function() {
    // $(this).val() will work here
});

si vous utilisez onselect et mélanger le balisage avec script vous devez passer une référence à l'élément courant :

onselect="foo(this);"

et ensuite :

function foo(element) {
    // $(element).val() will give you what you are looking for
}

113voto

ilgam Points 1913

Cela m'a aidé.

Pour sélectionner :

$('select_tags').on('change', function() {
    alert( $(this).find(":selected").val() );
});

Pour une radio ou une case à cocher :

$('radio_tags').on('change', function() {
    alert( $(this).find(":checked").val() );
});

0 votes

J'ai mis '#' dans mon code $('#select_tags').on('change', function()

19voto

Krishna Points 76

Essayez la méthode de délégation d'événements, cela fonctionne dans presque tous les cas.

$(document.body).on('change',"#selectID",function (e) {
   //doStuff
   var optVal= $("#selectID option:selected").val();
});

15voto

Sharuk Ahmed Points 585

La fonction flèche a une portée différente de la fonction, this.value donnera undefined pour une fonction flèche. Pour corriger cela, utilisez

$('select').on('change',(event) => {
     alert( event.target.value );
 });

0 votes

Merci ! Vous m'avez évité un mal de tête. Pour tous ceux qui se demandent pourquoi ; regardez les différences de scoping entre les fonctions flèches et les fonctions normales.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X