Set select option 'selected', by value

Mam pole select z kilkoma opcjami w nim. Teraz muszę wybrać jedną z tych options z jQuery. Ale jak Mogę to zrobić, skoro znam tylko value z option, które należy wybrać?

Mam następujący HTML:

<div class="id_100">
  <select>
    <option value="val1">Val 1</option>
    <option value="val2">Val 2</option>
    <option value="val3">Val 3</option>
  </select>
</div>

Muszę wybrać opcję z wartością val2. Jak można to zrobić?

Oto strona demo: http://jsfiddle.net/9Stxb/

Author: Peter Mortensen, 2012-11-12

28 answers

Jest łatwiejszy sposób, który nie wymaga wchodzenia do tagu options:

$("div.id_100 select").val("val2");

Sprawdź tę metodę jQuery.

 1651
Author: pinghsien422,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-21 15:51:46

Aby wybrać opcję o wartości 'val2':

$('.id_100 option[value=val2]').attr('selected','selected');
 465
Author: Kirill Ivlev,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-02 21:35:52

Użyj zdarzenia change() Po wybraniu wartości. Z docs:

Jeśli pole straci ostrość bez zmiany zawartości, zdarzenie nie zostanie wywołane. Aby wywołać zdarzenie ręcznie, Zastosuj .change() bez argumentów:

$("#select_id").val("val2").change();

Więcej informacji na stronie .Zmień().

 379
Author: jitendrapurohit,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-27 12:26:34

Usuń zaznaczenie wszystkich i filtruj wybrane opcje:

$('.id_100 option')
     .removeAttr('selected')
     .filter('[value=val1]')
         .attr('selected', true)
 58
Author: silly,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-25 13:25:52
<select name="contribution_status_id" id="contribution_status_id" class="form-select">
    <option value="1">Completed</option>
    <option value="2">Pending</option>
    <option value="3">Cancelled</option>
    <option value="4">Failed</option>
    <option value="5">In Progress</option>
    <option value="6">Overdue</option>
    <option value="7">Refunded</option>

Ustawianie statusu oczekującego według wartości

   $('#contribution_status_id').val("2");
 44
Author: Developer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-05 17:27:27

Dla mnie wykonało to zadanie

$("div.id_100").val("val2").change();
 37
Author: Taran,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-27 13:27:55

Myślę, że najprostszym sposobem jest wybranie ustawienia val (), ale możesz sprawdzić poniżej. Zobacz też Jak obsługiwać znacznik select I option w jQuery? aby uzyskać więcej informacji na temat opcji.

$('div.id_100  option[value="val2"]').prop("selected", true);

$('id_100').val('val2');

Nie zoptymalizowany, ale w niektórych przypadkach przydatna jest również następująca logika.

$('.id_100 option').each(function() {
    if($(this).val() == 'val2') {
        $(this).prop("selected", true);
    }
});
 29
Author: Dipu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-09 16:20:38

Najlepszy sposób jest taki:

$(`#YourSelect option[value='${YourValue}']`).prop('selected', true);
 23
Author: Daniel Carpio Contreras,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-03-11 17:55:54

Prosta odpowiedź to, at html

<select name="ukuran" id="idUkuran">
    <option value="1000">pilih ukuran</option>
    <option value="11">M</option>
    <option value="12">L</option>
    <option value="13">XL</option>
</select>

W jquery, wywołanie poniżej funkcji przez przycisk lub cokolwiek

$('#idUkuran').val(11).change();
To proste i w 100% działa, bo pochodzi z mojej pracy... :) mam nadzieję, że pomoże..
 19
Author: Mang Jojot,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-09 17:13:32

Możesz wybrać dowolny atrybut i jego wartość za pomocą selektora atrybutów [attributename=optionalvalue], więc w Twoim przypadku możesz wybrać opcję i ustawić wybrany atrybut.

$("div.id_100 > select > option[value=" + value + "]").prop("selected",true);

Gdzie value jest wartością, którą chcesz wybrać.

Jeśli chcesz usunąć wybrane wcześniej wartości, tak jak w przypadku wielokrotnego użycia, musisz je nieznacznie zmienić, aby najpierw usunąć wybrany atrybut

$("div.id_100 option:selected").prop("selected",false);
$("div.id_100 option[value=" + value + "]")
        .prop("selected",true);
 18
Author: Rune FS,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-25 13:26:34

Nie ma powodu, aby to przemyśleć, jedyne co robisz, to uzyskiwanie dostępu i ustawianie właściwości. To wszystko.

Ok, więc jakiś podstawowy dom: Jeśli robisz to w prostym JavaScript, to tak:

window.document.getElementById('my_stuff').selectedIndex = 4;

Ale nie robisz tego z prostym JavaScript, robisz to z jQuery. I w jQuery, chcesz użyć .funkcja prop (), aby ustawić właściwość, więc zrobisz to tak:

$("#my_stuff").prop('selectedIndex', 4);

W każdym razie, upewnij się, że Twój identyfikator jest unikalny. W przeciwnym razie będziesz walisz głową w ścianę, zastanawiając się, dlaczego to nie zadziałało.

 15
Author: Yitzhak,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-10-24 12:01:45

Najprostszym sposobem na to jest:

HTML

<select name="dept">
   <option value="">Which department does this doctor belong to?</option>
   <option value="1">Orthopaedics</option>
   <option value="2">Pathology</option>
   <option value="3">ENT</option>
</select>

JQuery

$('select[name="dept"]').val('3');

Wyjście: spowoduje aktywację ENT.

 13
Author: Pran,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-02 21:31:02

Lepiej użyć change() Po ustawieniu wartości select.

$("div.id_100 select").val("val2").change();

W ten sposób Kod zakończy się zmianą select by user, Wyjaśnienie zawarte jest w JS Fiddle :

Js Fiddle

 12
Author: Nick Tsai,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-05 02:42:47

$('#graphtype option[value=""]').prop("selected", true);

Działa to dobrze tam, gdzie #graphtype jest identyfikatorem znacznika select.

Przykładowy znacznik select:

 <select name="site" id="site" class="form-control" onchange="getgraph1(this.options[this.selectedIndex].value);">
    <option value="" selected>Site</option> 
    <option value="sitea">SiteA</option>
    <option value="siteb">SiteB</option>
  </select>
 12
Author: LOKENDRA,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-22 14:46:12

Można to osiągnąć różnymi metodami:
(pamiętaj, jeśli element ma być operowany, lepiej nadaj mu id lub klasę, zamiast mieć element nadrzędny id lub klasę).
Proszę., Ponieważ div ma klasę kierującą select wewnątrz niego, kod będzie brzmiał:

$("div.id_100 select").val("val2");

Lub

$('div.id_100  option[value="val2"]').prop("selected", true);

Jeśli Klasa zostałaby podana do wyboru, kod będzie:

$(".id_100").val("val2");

Lub

$('.id_100 option[value=val2]').attr('selected','selected');

Lub

$('.id_100 option')
    .removeAttr('selected')
    .filter('[value=val1]')
    .attr('selected', true);

Aby przekazać wartość dynamicznie, kod będzie be:
valu= "val2";

$("div.id_100 select").val(valu);
$("div.id_100 > select > option[value=" + valu + "]").prop("selected",true);

Jeśli element jest dodawany przez ajax, Musisz podać 'id' swojemu elementowi i użyć
okno.dokument.getElementById else Musisz dać 'class' swojemu elementowi i użyć
okno.dokument.getElementById

Można również wybrać wartość elementu select według jego numeru indeksu.
Jeśli nadałeś ID swojemu elementowi select, kod będzie brzmiał:

window.document.getElementById('select_element').selectedIndex = 4;

Pamiętaj, gdy zmienisz wartość select, jak wspomniano powyżej, Zmień metodę nie jest dzwoniłem.
tzn. jeśli napisałeś kod do zrobienia pewnych rzeczy na zmianę select powyższe metody zmienią wartość select, ale nie wywoła zmiany.
aby uruchomić funkcję zmiany, musisz dodać .change() na końcu. więc kod będzie:

$("#select_id").val("val2").change();
 9
Author: sifr_dot_in,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-08-17 04:59:24
var opt = new Option(name, id);
$("#selectboxName").append(opt);
opt.setAttribute("selected","selected");
 8
Author: Ravi Wadje,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-09 00:41:15

Użycie:

$("div.id_100 > select > option[value=" + value + "]").attr("selected",true);
To mi pasuje. Używam tego kodu do parsowania wartości w formie aktualizacji fancybox i mojego pełnego źródła z aplikacji.js to:
jQuery(".fancybox-btn-upd").click(function(){
    var ebid = jQuery(this).val();

    jQuery.ajax({
        type: "POST",
        url: js_base_url+"manajemen_cms/get_ebook_data",
        data: {ebookid:ebid},
        success: function(transport){
            var re = jQuery.parseJSON(transport);
            jQuery("#upd-kategori option[value="+re['kategori']+"]").attr('selected',true);
            document.getElementById("upd-nama").setAttribute('value',re['judul']);
            document.getElementById("upd-penerbit").setAttribute('value',re['penerbit']);
            document.getElementById("upd-tahun").setAttribute('value',re['terbit']);
            document.getElementById("upd-halaman").setAttribute('value',re['halaman']);
            document.getElementById("upd-bahasa").setAttribute('value',re['bahasa']);

            var content = jQuery("#fancybox-form-upd").html();
            jQuery.fancybox({
                type: 'ajax',
                prevEffect: 'none',
                nextEffect: 'none',
                closeBtn: true,
                content: content,
                helpers: {
                    title: {
                        type: 'inside'
                    }
                }
            });
        }
    });
});

A mój kod PHP to:

function get_ebook_data()
{
    $ebkid = $this->input->post('ebookid');
    $rs = $this->mod_manajemen->get_ebook_detail($ebkid);
    $hasil['id'] = $ebkid;
    foreach ($rs as $row) {
        $hasil['judul'] = $row->ebook_judul;
        $hasil['kategori'] = $row->ebook_cat_id;
        $hasil['penerbit'] = $row->ebook_penerbit;
        $hasil['terbit'] = $row->ebook_terbit;
        $hasil['halaman'] = $row->ebook_halaman;
        $hasil['bahasa'] = $row->ebook_bahasa;
        $hasil['format'] = $row->ebook_format;
    }
    $this->output->set_output(json_encode($hasil));
}
 8
Author: Adityo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-02 21:34:43

.attr () czasami nie działa w starszych wersjach jQuery, ale można użyć .prop():

$('select#ddlCountry option').each(function () {
    if ($(this).text().toLowerCase() == co.toLowerCase()) {
        $(this).prop('selected','selected');
        return;
    }
});
 7
Author: Shujaath Khan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-25 21:28:07

Źródło Link Tutaj wpisz opis obrazka

Użyj metody val () jQuery dla Single oraz wartość wielokrotna wybór w rozwijanym menu

    $(function () {

        $("button").click(function () {
            $("#myDropDownSingle").val('5');
            $("#myDropDownMultiple").val(['5', '4', '8']);
        });

    });

HTML

<p>
    <h5>Single Selection</h5>
    <select id="myDropDownSingle" class="form-control">
        <option value="0">Select Value 0</option>
        <option value="8">Option value 8</option>
        <option value="5">Option value 5</option>
        <option value="4">Option value 4</option>
    </select>
</p>
<p>
    <h5>Multiple Selection</h5>
    <select id="myDropDownMultiple" class="form-control" multiple>
        <option value="0">Select Value 0</option>
        <option value="8">Option value 8</option>
        <option value="5">Option value 5</option>
        <option value="4">Option value 4</option>
    </select>
</p>

<p>
    <button>Get Value and Text on Button Click</button>
</p>
 6
Author: Code Spy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-02-07 05:24:35

Wpisz ten kod:

$("#Controls_ID").val(value);
 5
Author: Osama khodrog,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-25 21:27:24

To działa na pewno dla Select Control :

$('select#ddlCountry option').each(function () {
if ($(this).text().toLowerCase() == co.toLowerCase()) {
    this.selected = true;
    return;
} });
 4
Author: Shujaath Khan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-02 21:32:09

It works for me

$("#id_100").val("val2");
 4
Author: user9972736,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-04-06 15:55:07

Spróbuj tego. Prosty, ale skuteczny javaScript + jQuery zabójcze combo.

SelectComponent:

<select id="YourSelectComponentID">
            <option value="0">Apple</option>
            <option value="2">Banana</option>
            <option value="3">Cat</option>
            <option value="4">Dolphin</option>
</select>

Wybór:

document.getElementById("YourSelectComponentID").value = 4;

Teraz zostanie wybrana opcja 4. Możesz to zrobić, aby domyślnie wybrać wartości na początku.

$(function(){
   document.getElementById("YourSelectComponentID").value = 4;
});

Lub utworzyć prostą funkcję umieść linię w niej i wywołaj funkcję na anyEvent, aby wybrać opcję

Mieszanka jquery + javaScript robi magię....

 3
Author: Majid Ali Khan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-20 17:13:10

To stary post, ale tutaj jest jedna prosta funkcja, która działa jak wtyczka jQuery.

    $.fn.selectOption = function(val){
        this.val(val)
        .find('option')
        .removeAttr('selected')
        .parent()
        .find('option[value="'+ val +'"]')
        .attr('selected', 'selected')
        .parent()
        .trigger('change');

        return this;
    };

Po prostu proste można zrobić coś takiego:

$('.id_100').selectOption('val2');

Reson dlaczego używać to ponieważ ty zmieniać selected satemant do DOM co jest crossbrowser obsługiwany i także wyzwalać zmiana ty móc ono.

Jest podstawową symulacją Ludzkiego działania.

 3
Author: Ivijan Stefan Stipić,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-16 09:58:59
  • Należy pamiętać, że wartość, którą chcemy zmieniać dynamicznie, musi być taka sama jak ta obecna w opcjach zdefiniowanych w HTML, jak to jest case sensative. Możesz zmienić swoje pole wyboru dynamicznie w następujący sposób,

$("div#YOUR_ID").val(VALUE_CHANGED).change(); //value must present in options you selected otherwise it will not work

 2
Author: Shahrukh Anwar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-05 05:45:52

Wydaje się, że wystąpił problem z dynamiczną zmianą formantów select rozwijanych, gdy formanty są dynamicznie tworzone zamiast znajdować się na statycznej stronie HTML.

W jQuery to rozwiązanie zadziałało dla mnie.

$('#editAddMake').val(result.data.make_id);
$('#editAddMake').selectmenu('refresh');

Tak jak dodatek pierwsza linijka kodu bez drugiej linijki, faktycznie działała przejrzyście w tym, że pobranie wybranego indeksu było poprawne po ustawieniu indeksu i jeśli faktycznie kliknąłeś kontrolkę, wyświetli się poprawny element, ale to nie odzwierciedlał w górnej etykiecie kontrolki.

Mam nadzieję, że to pomoże.
 1
Author: user2288580,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-05-04 19:25:12

Problem, na który natknąłem się, gdy wartość to ID, a tekst To kod. Nie można ustawić wartości za pomocą kodu, ale nie masz bezpośredniego dostępu do identyfikatora.

var value;

$("#selectorId > option").each(function () {
  if ("SOMECODE" === $(this).text()) {
    value = $(this).val();
  }
});

//Do work here
 0
Author: wattry,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-09-06 12:33:42

To działa dobrze

jQuery('.id_100').change(function(){ 
        var value = jQuery('.id_100').val(); //it gets you the value of selected option 
        console.log(value); // you can see your sected values in console, Eg 1,2,3
    });
 -1
Author: Mohammed Muzammil,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-02-02 06:10:31