Domanda

Utilizzando jQuery, come si fa a verificare se è presente un'opzione selezionata in un menu di selezione e, in caso contrario, assegnare una delle opzioni selezionate.

(La selezione viene generata con un labirinto di funzioni PHP in un'app che ho appena ereditato, quindi questa è una soluzione rapida mentre mi metto a testa in giro :)

È stato utile?

Soluzione

Anche se non sono sicuro di quello che vuoi realizzare, questo pezzo di codice ha funzionato per me.

<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>

Altri suggerimenti

Non è necessario utilizzare jQuery per questo:

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

Questa domanda è vecchia e ha molti punti di vista, quindi lancerò alcune cose là fuori che aiuteranno alcune persone, ne sono sicuro.

Per verificare se un elemento selezionato ha elementi selezionati:

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

o per verificare se una selezione non ha nulla selezionato:

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

o se sei in un ciclo di qualche tipo e vuoi verificare se l'elemento corrente è selezionato:

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

per verificare se un elemento non è selezionato durante un ciclo:

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

Questi sono alcuni dei modi per farlo. jQuery ha molti modi diversi per ottenere lo stesso risultato, quindi di solito scegli quello che sembra essere il più efficiente.

lencioni's risposta è ciò che consiglierei. Puoi modificare il selettore per l'opzione ('#mySelect option: last') per selezionare l'opzione con un valore specifico usando " #mySelect opzione [value = 'yourDefaultValue'] " ;. Ulteriori informazioni sui selettori .

Se lavori ampiamente con elenchi selezionati sul client, dai un'occhiata a questo plugin: http://www.texotela.co.uk/code/jquery/select/ . Dai un'occhiata alla fonte se vuoi vedere altri esempi di come lavorare con liste selezionate.

Ecco la mia funzione che cambia l'opzione selezionata. Funziona con 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>

Facile! L'impostazione predefinita dovrebbe essere la prima opzione. Fatto! Ciò porterebbe a JavaScript discreto, perché JavaScript non è necessario :)

JavaScript discreto

Mi sono già imbattuto nel plugin texotela menzionato, che mi consente risolverlo in questo modo:

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

Guarda selectedIndex dell'elemento select . A proposito, questa è una cosa del DOM semplice, non specifica per JQuery.

Questa è stata una breve sceneggiatura che ho scoperto che ha funzionato ... .Result è assegnato a un'etichetta.

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

Ragazzi, state facendo troppo per la selezione. Basta selezionare per valore:

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

Ho trovato un buon modo per verificare, se l'opzione è selezionata e selezionare un valore predefinito quando non lo è.

    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 non ha l'opzione selezionata per impostazione predefinita, .val () è non definito

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

Questo è un altro modo per verificare che un'opzione sia selezionata o meno in jquery. Questo restituirà Booleano (Vero o Falso).

[1] è l'indice dell'opzione box di selezione

Cambia l'evento sulla casella di selezione per attivarlo e una volta che lo fa, attira semplicemente l'attributo id dell'opzione selezionata: -

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

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

Stavo solo cercando qualcosa di simile e ho trovato questo:

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

Questo trova tutti i menu selezionati nella classe che non hanno già un'opzione selezionata e seleziona l'opzione predefinita (" 2 " in questo caso).

Ho provato a usare : selected invece di [selected] , ma non ha funzionato perché qualcosa è sempre selezionato, anche se nulla ha l'attributo

Se devi controllare esplicitamente ciascuna opzione per vedere se ne è stata selezionata l'opzione " " attributo puoi farlo. Altrimenti, usando l'opzione : selezionata otterrai il valore per la prima opzione predefinita.

var viewport_selected = false;      
$('#viewport option').each(function() {
    if ($(this).attr("selected") == "selected") {
        viewport_selected = true;
    }
});
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top