jQueryを使用してDropDownListの値を設定するにはどうすればよいですか?


349

質問のとおり、jQueryを使用してDropDownListコントロールの値を設定するにはどうすればよいですか?

回答:


602
$("#mydropdownlist").val("thevalue");

オプションタグの値がvalメソッドの値と一致することを確認してください。


ドロップダウンリストに対する範囲バリデーターがあり、上記のようにドロップダウンリストの値を設定していますが、範囲バリデーターは値を選択するように指示し続けます(選択した値が範囲内にある場合)。私の質問をご覧ください。stackoverflow.com
James

21
これは「変更」イベントを発生させません。
AGamePlayer 2013年

4
繰り返したがっています-「値」属性が設定されていることを確認してください。そうしないと、このメソッドは機能しません。(私はこれを見せてくれた人を助けていて、なぜそれがドロップダウンリストのテキストを介して選択されなかったのかと思っていました。)それが明確であることを確認したかったのです。
JasCav 2013

1
+1 $("#mycontrolId").selectmenu('refresh');変更を反映するために呼び出す必要があった
VladL 2013年

このリンクで詳細情報htmlgoodies.com/beyond/javascript/...
Niamath

52

インデックスを使用している場合は、選択したインデックスを.attr()で直接設定できます。

$("#mydropdownlist").attr('selectedIndex', 0);

これにより、ドロップリストの最初の値に設定されます。

編集: 私が上記で行った方法は以前は機能していました。しかし、もはやそうではないようです。

しかし、ハンがコメントでとても嬉しく指摘しているので、それを行う正しい方法は次のとおりです。

$("#mydropdownlist").get(0).selectedIndex = index_here;

7
現在、selectタグにはという名前の属性がないため、これはまったく機能しませんselectedIndex。代わりにDOMオブジェクトのプロパティです。したがってコードがなければならない:$("#mydropdownlist").get(0).selectedIndex = index_here;
ハン

5
$("#mydropdownlist").prop('selectedIndex', index_here); また働きます。
numaroth 2014

( "#mydropdownlist")。get(0).selectedIndex = index_here; この方法でうまくいった!! @
kasim '17 / 11/16

ドロップダウンで選択を変更するための素晴らしい方法、ありがとう
Avtandil Kavrelishvili

答えの中で受動的な攻撃を感じますか
Dheeraj

49

@Nick Berardiが提案したように、変更した値がUIフロントエンドに反映されない場合は、次のことを試してください。

$("#mydropdownlist").val("thevalue").change();

1
jQueryとLaravelフォームを使用してSelectBoxのchange()イベントを発生させることもできます。
WhySoSerious 2016

これは、変更が実際にドロップダウンに表示された唯一の答えです。selectmenu私のバージョンのjQueryでは未定義ですchange()が、トリックを行います。
Chad Hedgcock

ありがとう。これは私にとってそれが機能する唯一の方法でした(これ以上のすべてを試した後)。
inspirednz

20

次の非常にシンプルなアプローチを試してください。

/*make sure that value is included in the options value of the dropdownlist 
e.g. 
(<select><option value='CA'>California</option><option value='AK'>Alaska</option>      </select>)
*/

$('#mycontrolId').val(myvalue).attr("selected", "selected");

2
電話することを忘れないでください$("#mycontrolId").selectmenu('refresh');
VladL 2013年

@VladLということ$('#mycontrolId').selectmenu('refresh').val(myvalue).attr("selected", "selected");ですか?
Dylan Czenski 2016

9

ドロップダウンがAsp.Netドロップダウンの場合、以下のコードが正常に機能します。

 $("#<%=DropDownName.ClientID%>")[0].selectedIndex=0;

ただし、DropDownがHTMLドロップダウンの場合、このコードは機能します。

 $("#DropDownName")[0].selectedIndex=0;

5

質問に対する最良の回答:

$("#comboboxid").val(yourvalue).trigger("chosen:updated");

例えば:

$("#CityID").val(20).trigger("chosen:updated");

または

$("#CityID").val("chicago").trigger("chosen:updated");


2

それを行うには多くの方法があります。ここにそれらのいくつかがあります:

$("._statusDDL").val('2');

または

$('select').prop('selectedIndex', 3);

1
あなたのプロフィールは、あなたがここに含めたリンクに関連付けられていることを示しています。投稿のアフィリエーションを開示せずに、アフィリエイトしているもの(製品やWebサイトなど)にリンクすると、Stack Exchange / Stack Overflowでスパムと見なされます。参照:「良い」自己宣伝を意味するものは何ですか?自己宣伝に関するいくつかのヒントやアドバイススタックオーバーフローのための「スパム」の正確な定義は何ですか?、そして何かがスパムになるもの
Makyen

1

これは役立つと思います:

    $.getJSON('<%= Url.Action("GetDepartment") %>', 
              { coDepartment: paramDepartment },
              function(data) {
                    $(".autoCompleteDepartment").empty();
                    $(".autoCompleteDepartment").append($("<option />").val(-1));
                    $.each(data, function() {
                        $(".autoCompleteDepartment").append($("<option />").val(this.CodDepartment).text(this.DepartmentName));
                    });
                    $(".autoCompleteDepartment").val(-1);                                       
              }  
             );

このようにすると、テキストのない要素が追加されます。そのため、de comboをクリックしても表示されませんが、値-1は後で$( "。autoCompleteDepartment")。val(-1);を使用して選択を追加しました。コンボに有効な値があるかどうかを制御できます。

それが誰かを助けることを願っています。

私の英語でごめんなさい。


1

ドロップダウンの値を設定する必要があるだけの場合、最善の方法は

$("#ID").val("2");

ドロップダウンにonChangeイベントを設定し、ドロップダウンの更新後にこれを実行する場合など、ドロップダウン値を更新した後にスクリプトをトリガーする必要がある場合このように使用する必要があります

$("#ID").val("2").change();

0

選択したオプションをすばやく設定するための関数を次に示します。

function SetSelected(elem, val){
        $('#'+elem+' option').each(function(i,d){
        //  console.log('searching match for '+ elem + '  ' + d.value + ' equal to '+ val);
            if($.trim(d.value).toLowerCase() == $.trim(val).toLowerCase()){
        //      console.log('found match for '+ elem + '  ' + d.value);
                $('#'+elem).prop('selectedIndex', i);
            }
        });
    }

引数要素IDと選択した値を使用してこの関数を呼び出します。このような:

SetSelected('selectID','some option');

設定する選択オプションが多い場合に便利です。


0

すべて<options ....></options>をAjax呼び出しでロードする場合
これを行うには、以下の手順に従ってください。

1)。
Exのドロップダウンの設定値に個別のメソッドを作成します。

function set_ip_base_country(countryCode)
    $('#country').val(countryCode)
} 

2)。ajax呼び出しが成功したときに、このメソッドを呼び出します。

例:

success: function (doc) {
  .....
  .....
  $("#country").append('<option style="color:black;" value="' + key + '">'  +   value + '</option>')
  set_ip_base_country(ip_base_country)
}

0

drop-down selected値を設定して変更を更新

$("#PR2DistrictId option[value='@Model.PR2DistrictId']").attr("selected", true).trigger("chosen:updated")

ここで、最初に値を設定Modelし、選択した値を更新しました


0

//ドロップダウンリストのHTML形式。

<select id="MyDropDownList">
<option value=test1 selected>test1</option>
<option value=test2>test2</option>
<option value=test3>test3</option>
<option value=test4>test4</option>

//選択したアイテムをjavascriptを使用してtest2に変更する場合。これを試してみてください。//選択したい次のオプションを設定します

var NewOprionValue = "Test2"

        var RemoveSelected = $("#MyDropDownList")[0].innerHTML.replace('selected', '');
        var ChangeSelected = RemoveSelected.replace(NewOption, NewOption + 'selected>');
        $('#MyDropDownList').html(ChangeSelected);

0

上記の強調表示/チェックされた回答を使用するとうまくいきました...ここに少し洞察があります。私はURLを取得することに少し騙しましたが、基本的にはJavaScriptでURLを定義してから、上記のjquery回答を介して設定します。

<select id="select" onChange="window.location.href=this.value">
    <option value="">Select a task </option>
    <option value="http://127.0.0.1:5000/choose_form/1">Task 1</option>
    <option value="http://127.0.0.1:5000/choose_form/2">Task 2</option>
    <option value="http://127.0.0.1:5000/choose_form/3">Task 3</option>
    <option value="http://127.0.0.1:5000/choose_form/4">Task 4</option>
    <option value="http://127.0.0.1:5000/choose_form/5">Task 5</option>
    <option value="http://127.0.0.1:5000/choose_form/6">Task 6</option>
    <option value="http://127.0.0.1:5000/choose_form/7">Task 7</option>
    <option value="http://127.0.0.1:5000/choose_form/8">Task 8</option>
</select>
<script>
    var pathArray = window.location.pathname.split( '/' );
    var selectedItem = "http://127.0.0.1:5000/" + pathArray[1] + "/" + pathArray[2];
    var trimmedItem = selectedItem.trim();
    $("#select").val(trimmedItem);
</script>

0

Bootstrapを使用している人は、$(#elementId').selectpicker('val','elementValue')代わりに$('#elementId').val('elementValue')は、UIの値を更新しないため、の。

.change()上記のいくつかの回答で提案されているように、関数でも機能しますが、$('#elementId').change(function(){ //do something })関数をトリガーします。

将来このスレッドを参照する人のために、これをそこに投稿するだけです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.