Como verificar se uma opção está seleccionada?
$('#mySelectBox option').each(function() {
if ($(this).isChecked())
alert('this option is selected');
else
alert('this is not');
});
Aparentemente, o isChecked
não funciona. Portanto, a minha pergunta é: qual é a forma correcta de o fazer?
Obrigado.
9 answers
Actualizar
Um método mais directo para a opção seleccionada seria:
var selected_option = $('#mySelectBox option:selected');
Responder à Pergunta .is(':selected')
é o que você está procurando:
$('#mySelectBox option').each(function() {
if($(this).is(':selected')) ...
A melhor forma de o fazer seria:
$('#mySelectBox option').each(function() {
if(this.selected) ...
Embora, se estiver apenas à procura do valor seleccionado, tente:
$('#mySelectBox').val()
Se está à procura do texto do valor seleccionado, faça:
$('#mySelectBox option').filter(':selected').text();
Confira: http://api.jquery.com/selected-selector/
Da próxima vez procura por perguntas duplicadas:
Obter a opção seleccionada actual ou escolha a opção seleccionada ou Como obter $(esta) opção selecionada no jQuery? ou a opção [seleccionado=verdadeiro] não funciona
Pode obter a opção seleccionada desta forma:
$('#mySelectBox option:selected')...
DEMONSTRAÇÃO AO VIVO
Mas se quiseres iterar todas as opções, fá-lo com {[[2]} em vez de this.isChecked
que não existe:
$('#mySelectBox option').each(function() {
if (this.selected)
alert('this option is selected');
else
alert('this is not');
});
DEMONSTRAÇÃO AO VIVO
Actualizar:
Tens muitas respostas a sugerir que uses isto.$(this).is(':selected')
bem, ele pode ser feito muito mais rápido e mais fácil com {[[2]} então por que você deve usá-lo e não o método do elemento DOM nativo?!
Leia Conheça as suas propriedades e funções no DOM na jQuery
informação da marca
Se não estiver familiarizado ou confortável com is()
, pode apenas verificar o valor de prop("selected")
.
$('#mySelectBox option').each(function() {
if ($(this).prop("selected") == true) {
// do something
} else {
// do something
}
});
Editar:
Como @gdoron apontou nos comentários, a maneira mais rápida e apropriada de aceder à propriedade seleccionada de uma opção é através do selector DOM. Aqui está a actualização do fiddle que mostra esta acção.
if (this.selected == true) {
Parece funcionar também! Obrigado, gdoron.
Utilizar
$("#mySelectBox option:selected");
Para testar se é uma opção particularmyoption
:
if($("#mySelectBox option:selected").text() == myoption){
//...
}
Considere isto como a sua lista de selecção:
<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>
Depois, assinale a opção seleccionada desta forma:
function doSomething(param) {
if ($(param.selected)) {
alert(param + ' is selected!');
}
}
var optionSelected = false;
$( '#select_element option' ).each( function( i, el ) {
var optionHTMLStr = el.outerHTML;
if ( optionHTMLStr.indexOf( 'selected' ) > 0 ) {
optionSelected = true;
return false;
}
});
Se só quiser verificar se uma opção está seleccionada, então não precisa de iterar todas as opções. Apenas faça
if($('#mySelectBox').val()){
// do something
} else {
// do something else
}
Nota: Se tem uma opção com valor = 0 que deseja seleccionar, tem de alterar a condição if Para $('#mySelectBox').val() != null
Pode usar este caminho por 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>
Se precisar de verificar a opção estado seleccionado para valor específico:
$('#selectorId option[value=YOUR_VALUE]:selected')