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.
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
Vous pouvez obtenir l'option sélectionnée de cette façon:
$('#mySelectBox option:selected')...
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');
});
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
si vous n'êtes pas familier ou à l'aise avec is()
, vous pouvez simplement vérifier la valeur de prop("selected")
.
$('#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.
utiliser
$("#mySelectBox option:selected");
pour vérifier s'il s'agit d'une option particulière myoption
:
if($("#mySelectBox option:selected").text() == myoption){
//...
}
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!');
}
}
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;
}
});
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
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>
Si vous devez cocher l'option sélectionnée pour valeur spécifique :
$('#selectorId option[value=YOUR_VALUE]:selected')