選択オプションを「値を指定して」設定します


951

selectいくつかのオプションがあるフィールドがあります。次にoptions、jQuery でそれらの1つを選択する必要があります。しかしvalueoption選択する必要があるのを知っているだけで、どうすればよいですか?

次の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>

値付きのオプションを選択する必要がありますval2。これはどのように行うことができますか?

これがデモページです:http : //jsfiddle.net/9Stxb/


複数選択用のValのドロップダウン使用.valの単一値(「5」)のための([「5」、「4」、「8」])の完全なデモfreakyjolly.com/...
コードスパイ

回答:


1534

オプションタグに移動する必要がない簡単な方法があります。

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

this jQueryメソッドを確認してください。


18
これにより、FFにバグが発生する可能性があります(少なくとも)空の選択ボックスで発生します
ジョナサン

21
質問のポスターは「私はいくつかのオプションを含む選択フィールドを持っています...」で始まるので、空ではないので、解決策は正しいままです。
pinghsien422 2014

8
@JamesCazzettaは配列をvalに送信します:.val(["Multiple2", "Multiple3"])api.jquery.com/val/#val-value
scipilot 2015

133
.val(x).change();selectのonChangeイベントをトリガーするために手動で呼び出す必要がありましたが、val()を設定してもトリガーされません。
scipilot 2015

16
注意:val()はオプションに存在しない値を設定する場合があります。
ダニエル

429

値 'val2'のオプションを選択するには:

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

5
これは、必要な値がオプションである場合とない場合があり、オプションでない場合は変更を加えたくない場合に最適なソリューションです。.val()選択で使用し、そこにない値を選択しようとすると、すべての選択が解除されます。
ウォーリーアルトマン2014年

同意する-これは最もエレガントなオプションです-明確で要点があります。"prop"がすべてのケース(ブラウザ)で適切に機能するかどうかは不明です。しかし、これは確かにあなたのための簡単な検索を行います。
Lee Fuller

4
また、私が$("select[name=foo] option[value=bar]).attr('selected','selected');テストしたすべてのブラウザーでうまく機能するものを使用しました。
Lee Fuller

1
なぜなら、element.outerHTMLはこれで更新されますが、受け入れられた回答では更新されないからです。
HoldOffHunger 2017年

2
これは、選択ドロップダウンが非表示になっている場合は機能しないことに注意してください。私の場合、select boxitプラグインを使用していますが、選択ボックスの変更をトリガーして、ドロップダウンのonchangeハンドラーを含む元のコードが引き続き実行されるようにしています。selectboxit要素である新しい要素のコードを更新するだけです
chris c

331

change()値を選択してからイベントを使用してください。ドキュメントから:

内容が変更されずにフィールドがフォーカスを失うと、イベントはトリガーされません。イベントを手動でトリガーするには、.change()引数なしで適用します。

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

詳細は.change()にあります。


22
これはより多くの賛成票に値し、トップに属します。その適切な方法、などをいじる必要はなくpropattrすべてのイベントを適切に伝播します。
Polygnome 2017年

1
はい、これはすべてのイベントを正しく伝達します。私のテストでは、「attr」が初めて機能し、その後すべてが「選択」されたままでした。すべてを正しく変更する「prop」を使用しましたが、他のフィールド(表示/非表示)などのイベントを伝搬しませんでした。この回答はすべてのケースで機能し、正しいと見なす必要があります。
iLLin 2017年

1
変更するリスナーがすでにバインドされている場合、これにより無限ループが発生します。
qwertzman 2017年

1
私の愚かなドロップダウンリストの値を変更しようとするのにしばらく苦労しましたが、このソリューションが機能した唯一のものでした!ありがとう!
AxleWack

1
ありがとう。この提案が見つかるまで何度も検索しましたが、これが機能した唯一の方法でした。なぜそれが一番上にないのか分かりません。
Rob Santoro

58

最初にすべての選択を解除し、選択可能なオプションをフィルタリングします。

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

2
選択した属性の値は、空の文字列またはにすることができますselected。もしかして.prop()
rink.attendant.6 2013

2
いい答えです。オプションに値が存在しない場合、受け入れられた回答は空の選択で終了します。
Rauli Rajande 2015年

5
トップに戻るには、ここで一番です。今後の使用のために、attrの代わりにpropを使用する必要があると思います。
ダニエル

私はこのソリューションがとても好きです。セレクターが ".id_100> option"に変更された場合、パフォーマンスの点でより良いかどうか疑問に思っています
Hill

43
<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>

値による保留状況への設定

   $('#contribution_status_id').val("2");

36

私にとっては、次の仕事をしました

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

27

val()を設定することを選択するのが最も簡単な方法だと思いますが、以下を確認できます。jQueryで選択タグとオプションタグを処理する方法を参照してくださいオプションの詳細については。

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

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

最適化されていませんが、次のロジックも場合によっては役立ちます。

$('.id_100 option').each(function() {
    if($(this).val() == 'val2') {
        $(this).prop("selected", true);
    }
});

私は直接val()を設定するよりもこのメソッドを好みます。私も属性を設定したい-デバッグに役立ちます。$(this).attr( "selected"、 "selected")
Craig Jacobs

17

属性セレクターを使用して、任意の属性とその値[attributename=optionalvalue]を選択できるため、オプションを選択して、選択した属性を設定できます。

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

どこ value選択したい値は。

以前に選択した値を削除する必要がある場合、これを複数回使用する場合のように、最初に選択した属性を削除するように少し変更する必要があります。

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

15

最善の方法は次のとおりです:

$(`#YourSelect option[value='${YourValue}']`).prop('selected', true);

クロムでは、設定$('<select>').val('asdf')は現在選択されているオプションを表示するように選択を更新しませんでした。この答えはその問題を修正しました。
ジョシュアバーンズ

これも機能しますが、$( '<select>')。val( 'asdf')はChrome 79.0.3945.88で正常に機能しています
QMaster

14

簡単な答えは、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>

jqueryで、ボタンまたは何かで以下の関数を呼び出します

$('#idUkuran').val(11).change();

シンプルで100%動作します。私の作業から取得したものです。


デフォルト値は1000ですか?なぜ「」ではない
voodoocode

2
これはオプションであり、必要に応じて変更できます。:)
Mang Jojot

14

これを考え過ぎる理由はありません。あなたがしているのは、プロパティにアクセスして設定することだけです。それでおしまい。

わかりましたので、いくつかの基本的なdom: これをまっすぐなJavaScriptで実行している場合は、次のようになります。

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

しかし、あなたはまっすぐなJavaScriptでそれをしているのではなく、jQueryでそれをしているのです。そしてjQueryでは、.prop()関数を使用してプロパティを設定したいので、次のようにします:

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

とにかく、IDが一意であることを確認してください。そうでなければ、壁に頭をぶつけて、なぜこれがうまくいかなかったのだろうと思います。


12

これを行う最も簡単な方法は次のとおりです。

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');

出力:これによりENTがアクティブになります。


12

change()選択値を設定した後に使用することをお勧めします。

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

これにより、コードはユーザーによる選択の変更に近くなり、説明はJS Fiddleに含まれます。

JSフィドル


どうしてこれなの?少し説明してもらえますか?
71GA 2017

JSフィドル。change()メソッドを使用すると、変更するリスナーを処理する必要がある一方で、コードはユーザーによる選択の変更に近くなります。
Nick Tsai 2017

12

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

これ#graphtypeは、selectタグのIDがどこにあるかでうまくいきます。

選択タグの例:

 <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>


8

使用する:

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

これでうまくいきます。私はこのコードを使用して、fancybox更新フォームの値を解析しています。app.jsからの完全なソースは次のとおりです。

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'
                    }
                }
            });
        }
    });
});

そして私のPHPコードは:

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));
}

7

.attr()は古いjQueryバージョンでは機能しない場合がありますが、.prop()を使用できます。

$('select#ddlCountry option').each(function () {
    if ($(this).text().toLowerCase() == co.toLowerCase()) {
        $(this).prop('selected','selected');
        return;
    }
});

4

これは、選択コントロールでは確実に機能します。

$('select#ddlCountry option').each(function () {
if ($(this).text().toLowerCase() == co.toLowerCase()) {
    this.selected = true;
    return;
} });


4

ソースリンク ここに画像の説明を入力してください

ドロップダウンで単一および複数の値を選択するためにval() jQueryメソッドを使用する

    $(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>

3

これを試して。シンプルかつ効果的なjavaScript + jQueryの致命的なコンボ。

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>

選択:

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

これでオプション4が選択されます。これを行うと、デフォルトで開始時に値を選択できます。

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

または、単純な関数を作成してその中に行を入れ、anyEventで関数を呼び出してオプションを選択します

jQuery + javaScriptの混合が魔法を使います...


3

古い投稿ですが、jQueryプラグインのように機能する単純な関数が1つあります。

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

        return this;
    };

あなたは単純に次のようなことをすることができます:

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

これを使用する理由は、クロスブラウザでサポートされているものを選択したsatemantをDOMに変更し、変更をトリガーして変更をトリガーできるためです。

基本的に人間の行動シミュレーションです。


2
  • 動的に変更する値は、HTMLで定義したオプションに存在する値と同じであることに注意してくださいcase sensative。次のように、選択ボックスを動的に変更できます。

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


1

静的なHTMLページではなく、コントロールが動的に作成されたときに、選択したドロップダウンコントロールが動的に変化しないという問題があるようです。

jQueryでは、このソリューションがうまくいきました。

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

補遺のように、2行目がないコードの1行目は実際には透過的に機能しました。インデックスを設定した後、選択したインデックスを取得することは正しく、実際にコントロールをクリックした場合、正しい項目が表示されましたが、これは反映されませんでした。コントロールの上部ラベル。

お役に立てれば。


0

値がIDでテキストがコードの場合に遭遇した問題。コードを使用して値を設定することはできませんが、IDに直接アクセスすることはできません。

var value;

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

//Do work here


-1

これはうまくいきます

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