Comment vérifier si une option est sélectionnée?

$('#mySelectBox option').each(function() {
    if ($(this).isChecked())
       alert('this option is selected');
     else
       alert('this is not');
});

apparemment, le isChecked ne marche pas. DONC ma question est quelle est la bonne façon de le faire? Grâce.

115
demandé sur gdoron 2012-04-18 20:18:32

9 réponses

mise à JOUR

une méthode de jQuery plus directe à l'option choisie serait:

var selected_option = $('#mySelectBox option:selected');

répondre à la question .is(':selected') est ce que vous recherchez:

$('#mySelectBox option').each(function() {
    if($(this).is(':selected')) ...

la manière non jQuery (probablement la meilleure pratique) de le faire serait:

$('#mySelectBox option').each(function() {
    if(this.selected) ...

bien que, si vous êtes juste à la recherche de la valeur sélectionnée essayer:

$('#mySelectBox').val()

si vous recherchez le texte de la valeur sélectionnée faire:

$('#mySelectBox option').filter(':selected').text();

Check out: http://api.jquery.com/selected-selector /

la Prochaine fois, regardez pour dupliquer DONC questions:

en cours sélectionné l'option ou sélectionné l'option ou Comment obtenir $ (cette) option sélectionnée dans jQuery? ou option [selected=true] ne fonctionne pas

205
répondu iambriansreed 2017-05-23 12:17:59

Vous pouvez obtenir l'option sélectionnée de cette façon:

$('#mySelectBox option:selected')...

"LIVE DEMO

mais si vous voulez itérer toutes les options, faites-le avec this.selected au lieu de this.isChecked qui n'existe pas:

$('#mySelectBox option').each(function() {
    if (this.selected)
       alert('this option is selected');
     else
       alert('this is not');
});

"LIVE DEMO

mise à jour:

vous avez beaucoup de réponses vous suggérant d'utiliser ceci:

$(this).is(':selected') Eh bien, il peut être fait beaucoup plus vite et plus facile avec this.selected alors pourquoi devriez-vous l'utiliser et pas la méthode DOM élément natif?!

Lire Connaissez Votre modèle DOM des Propriétés et des Fonctions dans le jQuery tag

23
répondu gdoron 2017-05-23 10:31:19

si vous n'êtes pas familier ou à l'aise avec is() , vous pouvez simplement vérifier la valeur de prop("selected") .

Comme on le voit ici :

$('#mySelectBox option').each(function() {
    if ($(this).prop("selected") == true) {
       // do something
    } else {
       // do something
    }
});​

Modifier :

comme @gdoron l'a souligné dans les commentaires, la façon la plus rapide et la plus appropriée d'accéder à la propriété sélectionnée d'une option est via le sélecteur DOM. Voici le violon mise à jour l'affichage de cette action.

if (this.selected == true) {

semble fonctionner aussi bien! Merci gdoron.

2
répondu veeTrain 2012-04-18 17:04:11

utiliser

 $("#mySelectBox option:selected");

pour vérifier s'il s'agit d'une option particulière myoption :

 if($("#mySelectBox option:selected").text() == myoption){
          //...
 }
1
répondu Mouna Cheikhna 2012-04-18 16:30:32

Considérez cela comme votre liste de sélection:

<select onchange="var optionVal = $(this).find(':selected').val(); doSomething(optionVal)">

                                <option value="mostSeen">Most Seen</option>
                                <option value="newst">Newest</option>
                                <option value="mostSell">Most Sell</option>
                                <option value="mostCheap">Most Cheap</option>
                                <option value="mostExpensive">Most Expensive</option>

                            </select>

, puis vous cochez l'option sélectionnée comme ceci:

function doSomething(param) {

    if ($(param.selected)) {
        alert(param + ' is selected!');
    }

}
1
répondu Masoud Darvishian 2017-11-30 06:42:08

dans mon cas, je ne sais pas pourquoi le choix est toujours vrai. Donc la seule façon que j'ai pu imaginer est:

var optionSelected = false;
$( '#select_element option' ).each( function( i, el ) {
    var optionHTMLStr = el.outerHTML;

    if ( optionHTMLStr.indexOf( 'selected' ) > 0 ) {
        optionSelected = true;
        return false;
    }
});
0
répondu Sergey Onishchenko 2014-06-04 11:58:10

Si vous voulez seulement vérifier si une option est activée, vous n'avez pas besoin de parcourir toutes les options. Il suffit de faire

if($('#mySelectBox').val()){
    // do something
} else {
    // do something else
}

Note: Si vous avez une option avec value=0 que vous voulez sélectionner, vous devez changer la condition if en $('#mySelectBox').val() != null

0
répondu Adam 2017-03-23 10:01:17

vous pouvez utiliser cette façon par jquery:

$(document).ready(function(){
 $('#panel_master_user_job').change(function () {
 var job =  $('#panel_master_user_job').val();
 alert(job);
})
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select name="job" id="panel_master_user_job" class="form-control">
                                    <option value="master">Master</option>
                                    <option value="user">User</option>
                                    <option value="admin">Admin</option>
                                    <option value="custom">Custom</option>
                                </select>
0
répondu amir 2018-08-18 06:41:57

Si vous devez cocher l'option sélectionnée pour valeur spécifique :

$('#selectorId option[value=YOUR_VALUE]:selected')
0
répondu dimpiax 2018-10-05 00:10:08