risposta-alla-domanda-sullo-sviluppo-web-bd.com

Verifica se l'opzione è selezionata con jQuery, altrimenti seleziona un valore predefinito

Usando jQuery, come si controlla se c'è un'opzione selezionata in un menu di selezione, e in caso contrario, assegnare una delle opzioni come selezionato.

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

203
meleyal

Anche se non sono sicuro di cosa esattamente vuoi realizzare, questo pezzetto 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>
264
Joe Lencioni

Non c'è bisogno di usare jQuery per questo:

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

Questa domanda è vecchia e ha molti punti di vista, quindi mi limiterò a buttare fuori alcune cose che aiuteranno alcune persone 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 selezionato nulla:

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

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

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

per verificare se un elemento non è selezionato mentre si trova in un ciclo:

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

Questi sono alcuni dei modi per farlo. jQuery ha molti modi diversi per realizzare la stessa cosa, quindi di solito scegli solo quale sembra essere la più efficiente.

12
Gavin

La risposta di lencioni è ciò che raccomanderei. È possibile modificare il selettore per l'opzione ('#mySelect option:last') per selezionare l'opzione con un valore specifico utilizzando "#mySelect option[value='yourDefaultValue']". Altro su selettori .

Se lavori a lungo con gli elenchi selezionati sul client, controlla questo plug-in: http://www.texotela.co.uk/code/jquery/select/ . Dai un'occhiata alla fonte se vuoi vedere altri esempi di lavoro con gli elenchi selezionati.

11

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');   
}
9
sata
<script type="text/javascript"> 
$(document).ready(function() {
  if (!$("#mySelect option:selected").length)
   $("#mySelect").val( 3 );

});
</script>
7
Ram Prasad

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

JavaScript discreto

3

Ho già trovato il plug-in texotela menzionato, che mi permette di risolverlo in questo modo:

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

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

2
Hank Gay

Questo è stato uno script veloce che ho trovato funzionante .... Il risultato è assegnato a un'etichetta.

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

Voi ragazzi state facendo troppo per la selezione. Basta selezionare per valore:

$("#mySelect").val( 3 );
1
giagejoe

Ho trovato un buon modo per controllare, 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 di default selezionata quindi . Val () is undefined

1
Marcin Bąk
if (!$("#select").find("option:selected").length){
  //
}
1
Avinash Saini
$("option[value*='2']").attr('selected', 'selected');
// 2 for example, add * for every option
0
user420944

Se devi controllare esplicitamente ciascuna opzione per vedere se qualcuno ha l'attributo "selezionato" puoi farlo. Altrimenti, usando option:selected otterrai il valore per la prima opzione predefinita.

var viewport_selected = false;      
$('#viewport option').each(function() {
    if ($(this).attr("selected") == "selected") {
        viewport_selected = true;
    }
});
0
zeman

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 utilizzare :selected anziché [selected], ma non ha funzionato perché qualcosa è sempre selezionato, anche se nulla ha l'attributo

0
Steven Schoch

Cambia evento sulla casella di selezione per sparare e una volta fatto, basta tirare 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;
  }
});
0
$("#select_box_id").children()[1].selected

Questo è un altro modo di controllare che un'opzione sia selezionata o meno in jQuery. Ciò restituirà Boolean (True o False).

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

0