Pergunta

Usando jQuery, como você verificar se há uma opção selecionada em um menu de seleção, e se não, um assign das opções, conforme selecionado.

(é gerado O select com um labirinto de funções PHP em um aplicativo que acabou de herdar, por isso esta é uma solução rápida, enquanto eu colocar minha cabeça em torno daqueles:)

Foi útil?

Solução

Enquanto eu não tenho certeza sobre o que exatamente você quer realizar, este pouco de código funcionou para mim.

<select id="mySelect" multiple="multiple">
  <option value="1">First</option>
  <option value="2">Second</option>
  <option value="3">Third</option>
  <option value="4">Fourth</option>
</select>

<script type="text/javascript"> 
$(document).ready(function() {
  if (!$("#mySelect option:selected").length) {
    $("#mySelect option[value='3']").attr('selected', 'selected');
  }
});
</script>

Outras dicas

Não há necessidade de usar jQuery para isso:

var foo = document.getElementById('yourSelect');
if (foo)
{
   if (foo.selectedIndex != null)
   {
       foo.selectedIndex = 0;
   } 
}

Esta questão é antiga e tem um monte de pontos de vista, então eu vou apenas jogar algumas coisas lá fora, que vai ajudar algumas pessoas, tenho certeza.

Para verificar se um elemento select tem quaisquer itens selecionados:

if ($('#mySelect option:selected').length > 0) { alert('has a selected item'); }

ou para verificar se um seleto tem nada selecionado:

if ($('#mySelect option:selected').length == 0) { alert('nothing selected'); }

ou se você estiver em um loop de algum tipo e quiser verificar se o elemento atual for selecionado:

$('#mySelect option').each(function() {
    if ($(this).is(':selected')) { .. }
});

para verificar se um elemento não for selecionada, enquanto em um loop:

$('#mySelect option').each(function() {
    if ($(this).not(':selected')) { .. }
});

Estas são algumas das maneiras de fazer isso. jQuery tem muitas maneiras diferentes de realizar a mesma coisa, então você geralmente apenas escolher qual deles parece ser o mais eficiente.

Lencioni de resposta é o que eu recomendo. Você pode mudar o seletor para o ('#mySelect option:last') opção para selecionar a opção com um valor específico usando "#mySelect option[value='yourDefaultValue']". Mais sobre seletores .

Se você está trabalhando intensamente com listas de seleção na verificação cliente este plugin: http://www.texotela.co.uk/code/jquery/select/ . Dê uma olhada na fonte, se você quiser ver mais alguns exemplos de trabalhar com listas de seleção.

Aqui é a minha função de alterar a opção selecionada. Ele trabalha para jQuery 1.3.2

function selectOption(select_id, option_val) {
    $('#'+select_id+' option:selected').removeAttr('selected');
    $('#'+select_id+' option[value='+option_val+']').attr('selected','selected');   
}
<script type="text/javascript"> 
$(document).ready(function() {
  if (!$("#mySelect option:selected").length)
   $("#mySelect").val( 3 );

});
</script>

fácil! O padrão deve ser a primeira opção. Concluído Isso levaria a JavaScript discreta, porque o JavaScript não é necessário:!)

JavaScript discreta

Já se deparou com o texotela plug-in mencionado, o que me deixou resolvê-lo como este:

$(document).ready(function(){
    if ( $("#context").selectedValues() == false) {
    $("#context").selectOptions("71");
    }
});

Olhe para o selectedIndex do elemento select. BTW, isso é uma coisa DOM plain ol', não JQuery específicas do.

Este foi um script rápido descobri que trabalhou ... .Result é atribuído a um rótulo.

$(".Result").html($("option:selected").text());

Vocês estão fazendo de forma demasiada para a seleção. Basta selecionar por valor:

$("#mySelect").val( 3 );
if (!$("#select").find("option:selected").length){
  //
}

Eu encontrei uma boa maneira de verificar, se a opção for selecionada e selecione um padrão quando não é.

    if(!$('#some_select option[selected="selected"]').val()) {
        //here code if it HAS NOT selected value
        //for exaple adding the first value as "placeholder"
        $('#some_select option:first-child').before('<option disabled selected>Wybierz:</option>');
    }

Se #some_select padrão has't opção selecionada, em seguida, .val () indefinido

$("option[value*='2']").attr('selected', 'selected');
// 2 for example, add * for every option
$("#select_box_id").children()[1].selected

Esta é uma outra maneira de verificar uma opção for selecionada ou não em jQuery. Isso irá retornar booleano (verdadeiro ou falso).

[1] é o índice de selecione a opção caixa

Alterar evento na caixa de seleção ao fogo e uma vez que isso acontecer, então basta puxar o atributo id da opção selecionada: -

$("#type").change(function(){
  var id = $(this).find("option:selected").attr("id");

  switch (id){
    case "trade_buy_max":
      // do something here
      break;
  }
});

Eu só estava procurando por algo semelhante e encontrou o seguinte:

$('.mySelect:not(:has(option[selected])) option[value="2"]').attr('selected', true);

Este encontra todos os menus selecionados na classe que ainda não têm uma opção selecionados e seleciona a opção padrão ( "2" neste caso).

Eu tentei usar :selected vez de [selected], mas isso não funcionou porque algo é sempre selecionado, mesmo que nada tem o atributo

Se você precisa verificar explicitamente cada opção para ver se algum tem o atributo "selecionado" você pode fazer isso. Caso contrário usando option:selected você obterá o valor para a primeira opção padrão.

var viewport_selected = false;      
$('#viewport option').each(function() {
    if ($(this).attr("selected") == "selected") {
        viewport_selected = true;
    }
});
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top