$('#mySelectBox option').each(function() {
if ($(this).isChecked())
alert('this option is selected');
else
alert('this is not');
});
Apparemment, la isChecked
ne fonctionne pas. SO Ma question est la suivante: quelle est la bonne façon de procéder? Merci.
UPDATE
Une méthode jQuery plus directe pour l'option sélectionnée 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 de le faire non jQuery (sans doute la meilleure pratique) serait:
$('#mySelectBox option').each(function() {
if(this.selected) ...
Cependant, si vous ne recherchez que la valeur sélectionnée, essayez:
$('#mySelectBox').val()
Si vous recherchez le texte de la valeur sélectionnée, faites:
$('#mySelectBox option').filter(':selected').text();
Départ: http://api.jquery.com/selected-selector/
La prochaine fois, cherchez les doublons SO questions:
Obtenir l'option actuellement sélectionnée ou Définir l'option sélectionnée ou Comment obtenir l'option sélectionnée dans jQuery? ou option [sélectionné = true] ne fonctionne pas
Vous pouvez obtenir l'option sélectionnée de cette façon:
$('#mySelectBox option:selected')...
Mais si vous voulez parcourir 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, cela peut être fait beaucoup plus rapidement et facilement avec this.selected
alors pourquoi devriez-vous l'utiliser et non la méthode de l'élément natif DOM?!
Lisez connaissez vos propriétés et fonctions DOM dans la jQuery
informations de balise
Si vous ne connaissez pas ou ne maîtrisez pas bien 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
}
});
Éditer :
Comme @gdoron l'a souligné dans les commentaires, le moyen le plus rapide et le plus approprié d'accéder à la propriété sélectionnée d'une option consiste à utiliser le sélecteur DOM. Voici le violon mise à jour affichant cette action.
if (this.selected == true) {
semble fonctionner aussi bien! Merci Gdoron.
Considérez ceci 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>
alors vous cochez l'option sélectionnée comme ceci:
function doSomething(param) {
if ($(param.selected)) {
alert(param + ' is selected!');
}
}
utilisation
$("#mySelectBox option:selected");
pour tester si c'est une option particulière myoption
:
if($("#mySelectBox option:selected").text() == myoption){
//...
}
Vous pouvez utiliser cette méthode 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 vérifier l’état de l’option sélectionnée pour valeur spécifique:
$('#selectorId option[value=YOUR_VALUE]:selected')
Si vous souhaitez uniquement vérifier si une option est sélectionnée, vous n'avez pas besoin de parcourir toutes les options. Il suffit de faire
if($('#mySelectBox').val()){
// do something
} else {
// do something else
}
Remarque: Si vous souhaitez sélectionner une option avec la valeur = 0, vous devez définir la condition if sur $('#mySelectBox').val() != null
.
Dans mon cas, je ne sais pas pourquoi sélectionné est toujours vrai. Donc, la seule façon dont 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;
}
});