Zapytałem podobny Zapytanie dziś rano, jak wybrać rozwijanie według jego wartości, a nie sekwencji.

Problem polega na tym, jak korzystać z wielokrotnego wyboru rozwijanego i wybierz opcje według ich wartości, a nie sekwencji. (np. Chciałbym wybrać A1 i A3, przez odpowiedni klucz podstawowy, 1 i 4)

<select id="id_deals-sales_item" multiple="multiple">
  <option value="1">a1</option>
  <option value="2">a2</option>
  <option value="4">a3</option>
</select>

Stary sposób przez sekwencję:

for (i=0; i<data[0].fields['sales_item'].length;i++)
    $('#id_deals-sales_item>option:eq(' + (data[0].fields['sales_item'][i]) + ')').prop('selected', true);

Miałem nadzieję zastosować to samo rozwiązanie tutaj z Val (), ale nie działa.

for (i=0; i<=data[0].fields['sales_item'].length;i++)
    $('#id_deals-sales_item').val(data[0].fields['sales_item'][i]); 

Czy muszę tutaj zastosować inną sztuczkę? Dzięki

3
Houman 26 wrzesień 2012, 03:09

2 odpowiedzi

Najlepsza odpowiedź

To dlatego, że nadwrażasz poprzednich wybranych wartości w każdej iteracji, powinieneś przejść tablicę do metody val, spróbuj tego:

var vals = [];
for (i=0; i<=data[0].fields['sales_item'].length;i++) {
    vals.push(data[0].fields['sales_item'][i]); 
}

$("#id_deals-sales_item").val(vals);
1
undefined 25 wrzesień 2012, 23:16

Spróbuj tego

for (i=0; i<=data[0].fields['sales_item'].length;i++)
    $("#id_deals-sales_item option[value='" +data[0].fields['sales_item'][i] + "']").prop('selected', true);​
1
Sushanth -- 25 wrzesień 2012, 23:15