it-swarm.dev

Ustaw wybraną opcję w polu wyboru

Chcę ustawić opcję, która została wcześniej wybrana do wyświetlenia podczas ładowania strony. Próbowałem go z następującego kodu:

$("#gate").val('Gateway 2');

z

<select id="gate">
    <option value='null'>- choose -</option>
    <option value='gateway_1'>Gateway 1</option>
    <option value='gateway_2'>Gateway 2</option>
</select>

Ale to nie działa. Jakieś pomysły?

306
Artjom Zabelin

To zdecydowanie powinno zadziałać. Oto wersja demo . Upewnij się, że umieściłeś swój kod w $(document).ready:

$(function() {
    $("#gate").val('gateway_2');
});
444
Darin Dimitrov
$(document).ready(function() {
    $("#gate option[value='Gateway 2']").prop('selected', true);
    // you need to specify id of combo to set right combo, if more than one combo
});
142
Zkoh

$('#gate').val('Gateway 2').prop('selected', true);

31
Marty Hirsch

Znalazłem za pomocą metody .val () jQuery mieć znaczącą wadę.

<select id="gate"></select>
$("#gate").val("Gateway 2");

Jeśli to pole wyboru (lub jakikolwiek inny obiekt wejściowy) jest w formie i w formularzu znajduje się przycisk resetowania, po kliknięciu przycisku resetowania ustawiona wartość zostanie wyczyszczona i nie zostanie przywrócona do wartości początkowej, jak można się było spodziewać.

To wydaje się działać najlepiej dla mnie.

Dla pól wyboru 

<select id="gate"></select>
$("#gate option[value='Gateway 2']").attr("selected", true);

Do wprowadzania tekstu

<input type="text" id="gate" />
$("#gate").attr("value", "your desired value")

Dla wejść tekstowych

<textarea id="gate"></textarea>
$("#gate").html("your desired value")

Dla pól wyboru

<input type="checkbox" id="gate" />
$("#gate option[value='Gateway 2']").attr("checked", true);

Dla przycisków radiowych

<input type="radio" id="gate" value="this"/> or <input type="radio" id="gate" value="that"/>
$("#gate[value='this']").attr("checked", true);
15
Mike
  $("#form-field").val("5").trigger("change");
9
Mohd Bashir

To działa dobrze. Zobacz to skrzypce: http://jsfiddle.net/kveAL/

Możliwe, że musisz zadeklarować swój jQuery w procedurze $(document).ready()

Ponadto, czy możesz mieć dwa elementy, które mają ten sam identyfikator?

6
James Wiseman

To byłaby inna opcja:

$('.id_100 option[value=val2]').prop('selected', true);
5
Kent Aguilar

Miałem ten sam problem. 

Rozwiązanie: dodaj odświeżenie.

$("#gate").val('Gateway 2');
$("#gate").selectmenu('refresh');
4
Posted

Mój problem

get_courses(); //// To load the course list
$("#course").val(course); //// Setting default value of the list

Miałem ten sam problem. Jedyną różnicą od twojego kodu jest to, że ładowałem pole wyboru przez wywołanie ajax i wkrótce po wykonaniu wywołania ajaxa ustawiłem domyślną wartość pola wyboru

Rozwiązanie

get_courses();
   setTimeout(function() {
     $("#course").val(course);
  }, 10);
1
Korah

Wiem, że istnieje kilka iteracji odpowiedzi, ale teraz nie wymaga to jquery ani żadnej innej biblioteki zewnętrznej i można je wykonać całkiem łatwo, za pomocą poniższych.

document.querySelector("#gate option[value='Gateway 2']").setAttribute('selected',true);
<select id="gate">
    <option value='null'>- choose -</option>
    <option value='Gateway 1'>Gateway 1</option>
    <option value='Gateway 2'>Gateway 2</option>
</select>

1
SyWill

Niektóre przypadki mogą być

$('#gate option[value='+data.Gateway2+']').attr('selected', true);
0
Hemil