Domanda

Come posso ottenere tutte le opzioni di un selezionato tramite jQuery passando sul suo ID?

io sto solo cercando di ottenere i loro valori, non il testo.

È stato utile?

Soluzione

Usa:

$("#id option").each(function()
{
    // Add $(this).val() to your list
});

.each () | jQuery API Documentation

Altri suggerimenti

Non so jQuery, ma so che se si ottiene l'elemento di selezione, che contiene un oggetto 'opzioni'.

var myOpts = document.getElementById('yourselect').options;
alert(myOpts[0].value) //=> Value of the first option

$.map è probabilmente il modo più efficace per farlo.

var options = $('#selectBox option');

var values = $.map(options ,function(option) {
    return option.value;
});

È possibile aggiungere le opzioni di modifica per $('#selectBox option:selected') se desideri solo quelli che sono stati selezionati.

La prima riga seleziona tutte le caselle e mette loro elemento jQuery in una variabile. Abbiamo quindi utilizzare la funzione di .map jQuery per applicare una funzione a ciascuno degli elementi di quella variabile; tutto quello che stiamo facendo è di restituire il valore di ogni elemento come questo è tutto ci sta a cuore. Perché noi li stiamo tornando all'interno della funzione di carta si costruisce in realtà una matrice dei valori così come richiesto.

Alcune risposte usa each, ma map è un'alternativa migliore qui IMHO:

$("select#example option").map(function() {return $(this).val();}).get();

Ci sono (almeno) due funzioni map in jQuery. La risposta di Thomas Petersen utilizza "Utilità / jQuery.map"; questa risposta utilizza "Movimento / mappa" (e quindi un po 'di codice più pulito).

Dipende da che cosa avete intenzione di fare con i valori. Se, diciamo, vogliono restituire i valori da una funzione, map è probabilmente l'alternativa migliore. Ma se avete intenzione di utilizzare i valori direttamente probabilmente si vuole each.

$('select#id').find('option').each(function() {
    alert($(this).val());
});
$("#id option").each(function()
{
    $(this).prop('selected', true);
});

Anche se, il CORRECT modo è quello di impostare la proprietà DOM dell'elemento, in questo modo:

$("#id option").each(function(){
    $(this).attr('selected', true);
});

Questo metterà i valori di opzione di #myselectbox in una bella gamma pulita per voi:

// First, get the elements into a list
var domelts = $('#myselectbox option');

// Next, translate that into an array of just the values
var values = $.map(domelts, function(elt, i) { return $(elt).val();});

Si può prendere tutti i "valori selezionati" dal nome delle caselle di controllo e presentarli in un pungiglione separati da "".

Un bel modo per farlo è quello di utilizzare di jQuery $ .map ():

var selected_val = $.map($("input[name='d_name']:checked"), function(a)
    {
        return a.value;
    }).join(',');

alert(selected_val);
Esempio

Lavorare

Il modo più efficace per farlo è usare $.map()

Esempio:

var values = $.map($('#selectBox option'), function(ele) {
   return ele.value; 
});

È possibile utilizzare seguente codice per che:

var assignedRoleId = new Array();
$('#RolesListAssigned option').each(function(){
    assignedRoleId.push(this.value);
});

Per l'opzione multiselect:

$('#test').val() ritorna elenco di valori selezionati. $('#test option').length restituisce il numero complessivo di opzioni (sia selezionato e non selezionato)

Questo è un semplice script con jQuery:

var items = $("#IDSELECT > option").map(function() {
    var opt = {};
    opt[$(this).val()] = $(this).text();
    return opt;
}).get();
var selectvalues = [];

for(var i = 0; i < items.length; i++) {
    for(key in items[i]) {


        var id = key;
        var text = items[i][key];

        item = {}
        item ["id"] = id;
        item ["text"] = text;

        selectvalues.push(item);

    }
}
console.log(selectvalues);
copy(selectvalues);
<select>
  <option value="volvo">Volvo</option>
  <option value="saab">Saab</option>
  <option value="mercedes">Mercedes</option>
  <option value="audi">Audi</option>
</select>

Ecco un semplice esempio in jQuery per ottenere tutti i valori, testi, o il valore della voce selezionata, o il testo dell'elemento selezionato

$('#nCS1 > option').each((index, obj) => {
   console.log($(obj).val());
})

printOptionValues = () => {

  $('#nCS1 > option').each((index, obj) => {
    console.log($(obj).val());
  })

}

printOptionTexts = () => {
  $('#nCS1 > option').each((index, obj) => {
    console.log($(obj).text());
  })
}

printSelectedItemText = () => {
  console.log($('#nCS1 option:selected').text());
}

printSelectedItemValue = () => {
  console.log($('#nCS1 option:selected').val());
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select size="1" id="nCS1" name="nCS1" class="form-control" >
					<option value="22">Australia</option>
          <option value="23">Brunei</option>
          <option value="33">Cambodia</option>
          <option value="32">Canada</option>
          <option value="27">Dubai</option>
          <option value="28">Indonesia</option>
          <option value="25">Malaysia</option>				
</select>
<br/>
<input type='button' onclick='printOptionValues()' value='print option values' />
<br/>
<input type='button' onclick='printOptionTexts()' value='print option texts' />
<br/>
<input type='button' onclick='printSelectedItemText()' value='print selected option text'/>
<br/>
<input type='button' onclick='printSelectedItemValue()' value='print selected option value' />

$("input[type=checkbox][checked]").serializeArray();

o

$(".some_class[type=checkbox][checked]").serializeArray();

Per vedere i risultati:

alert($("input[type=checkbox][checked]").serializeArray().toSource());

Se siete alla ricerca di tutte le opzioni con un po 'di testo selezionato quindi il codice qui sotto funzionerà.

$('#test').find("select option:contains('B')").filter(":selected");
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top