オプションが選択されているかどうかを確認するにはどうすればよいですか?


146
$('#mySelectBox option').each(function() {
    if ($(this).isChecked())
       alert('this option is selected');
     else
       alert('this is not');
});

どうやら、isChecked動作しません。だから私の質問はこれを行う適切な方法は何ですか?ありがとう。


2
00zebra00、以下の多くのオプションから回答を見つけてくれてありがとう。ただし、選択したプロパティにアクセスするための「最善の」方法については、以下のコメントの会話に必ず注意してください。一般的な要点は、(使用して、あなたがJavaScriptで直接要素にアクセスすることができたときにということであるthis.selectedあなたはjQueryのを(使用してバイパスすること)$(this).prop("selected"))が、彼らは意志あなたのための仕事の両方。
veeTrain 2012

回答:


263

更新

選択したオプションに対するより直接的なjQueryメソッドは次のとおりです。

var selected_option = $('#mySelectBox option:selected');

質問に答える.is(':selected')ことはあなたが探しているものです:

$('#mySelectBox option').each(function() {
    if($(this).is(':selected')) ...

jQuery以外の(おそらくベストプラクティス)方法は次のとおりです。

$('#mySelectBox option').each(function() {
    if(this.selected) ...

ただし、選択した値を探しているだけの場合は、以下を試してください。

$('#mySelectBox').val()

選択した値のテキストを探している場合は、次のようにします。

$('#mySelectBox option').filter(':selected').text();

チェックアウト:http : //api.jquery.com/selected-selector/

次回は重複するSOの質問を探します:

現在選択されているオプションを取得する か、 選択されたオプションを設定する、jQueryで$(this)選択されたオプションを取得する方法? または option [selected = true]が機能しない


正当な理由なくjQueryを使用します。ネイティブのjs DOMプロパティを使用します。これを
gdoronはモニカをサポートしています

3
あなたは私の答えを読んでいないようです。this.selected代わりに使用できます$(this).is(":selected")。これにはjsperfは必要ありません。私はjQueryの使用に反対することはありません!しかし、必要なときに使用します。オーバーヘッドとコードを追加するだけの場合ではありません。
gdoronはモニカをサポートしています

@gdoron this.selectedは完全に有効ですが、彼はそれを行うための適切なjQuery方法を求めました。
iambriansreed

2
@gdoron 私はあなたに完全に同意します。たぶん、jQueryで育った私たちには、修正用のJavaScriptクラスを採用する必要があります。:)
iambriansreed

2
@gmoronいいえ、私の質問は反対票と賛成票でした。良い探偵仕事。
iambriansreed

26

選択したオプションは次の方法で取得できます。

$('#mySelectBox option:selected')...

ライブデモ

しかし、すべてのオプションを反復したい場合は、存在しないもののthis.selected代わりにそれを実行してくださいthis.isChecked

$('#mySelectBox option').each(function() {
    if (this.selected)
       alert('this option is selected');
     else
       alert('this is not');
});

ライブデモ

更新:

あなたはこれを使用することを提案するたくさんの答えを得ました:

$(this).is(':selected') まあ、それははるかに速く簡単に行うことができます this.selectedできるので、なぜネイティブDOM要素メソッドではなくそれを使うべきなのでしょうか?!

タグ情報DOMのプロパティと関数を確認するを読みjQuery ください


1
@downvoter、コメントしてもいいですか?日陰から出て戦う!:)
gdoronはモニカをサポートしています

多分あなたは質問に答えなかったがベストプラクティスを与えたからです。;)
iambriansreed 2012

1
@iambriansreed。は?質問に答えませんでしたか?質問のどの部分が未回答のままでしたか?
gdoronは、

2
ここで興味深い議論。:)すべてのDVがなぜなのかはわかりませんが、私はUVを使用しthis.selectedたすべての人に使用しました。jQueryの乱用/乱用に関するコメントに同意します。jQueryを知ることの一部は、いつ使用しないかを知ることです。':selected'ただし、セレクターはカスタムSizzleセレクターであるため、このセレクターを使用するとquerySelectorAll、サポートされているブラウザーでのの使用が無効になることに注意してください。すばらしい短いコードを提供するので、それは間違いなく世界の終わりではありませんが、個人的にはシズルのみのものを避けがちです。

@gdoronこの質問をMetaで指摘したように、興味を持った。DVに関しては、このノードが役立つ場合があります。
VisioN

4

に慣れていない場合is()、またはに慣れていない場合は、の値を確認してくださいprop("selected")

ここに見られるように

$('#mySelectBox option').each(function() {
    if ($(this).prop("selected") == true) {
       // do something
    } else {
       // do something
    }
});​

編集

@gdoronがコメントで指摘したように、オプションの選択されたプロパティにアクセスするためのより高速で最も適切な方法は、DOMセレクターを使用することです。これは、このアクションを表示するフィドルアップデートです。

if (this.selected == true) {

も動作するようです!ありがとうgdoron。


$(this).prop("selected")代わりに使用する理由を教えてくださいthis.selected。それはあなたに何を与えるのですか?ps私は賛成投票ではありません...
gdoronはモニカをサポートしてい

@gdoron、私が考えた主な利点は親しみやすさでした。何にis使用するのが最適かわかりませんが、propとattrでプロパティにアクセスするのが好きです。ほとんどのシナリオでは、それはまさしく好みの問題かもしれません。はい、好奇心旺盛な反対投票があります。
veeTrain 2012

2
タグ情報の「DOMのプロパティと関数について知る」の部分を読むことを勧めします。単純なことをするために遅いコード+より多くのコードを使用する理由はありません。$(...)。is( ":visiable")のような複雑なセレクターに使用する必要があります。jQuery .is()$(...).is('.foo > [name="aaa"] input') or for properties that are not native DOM elements properties like
gdoronはモニカをサポートしています

@gdoron; それを指摘してくれてありがとう。私はそれに応じて私の答えを更新しました。
veeTrain 2012

問題ありません。他の人より優れていると思われる場合は、私の回答に賛成投票できます。(と私は答えを望んでいない$(this).is(':selected')受け入れられるようにstackoverflowのベストプラクティスを学ぶために使用されるべきではなく、一般的な間違いが...。)
gdoronはモニカサポートされて

3

あなたはjqueryでこのように使うことができます:

$(document).ready(function(){
 $('#panel_master_user_job').change(function () {
 var job =  $('#panel_master_user_job').val();
 alert(job);
})
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select name="job" id="panel_master_user_job" class="form-control">
                                    <option value="master">Master</option>
                                    <option value="user">User</option>
                                    <option value="admin">Admin</option>
                                    <option value="custom">Custom</option>
                                </select>


2

使用する

 $("#mySelectBox option:selected");

特定のオプションかどうかをテストするにはmyoption

 if($("#mySelectBox option:selected").text() == myoption){
          //...
 }

あなたに反対票を投じなかった(ここにシリアル反対投票があります!)が、何ですかmyoption???
gdoronはモニカをサポートしています

1
OPが選択された場合にOPがテストするオプションの例となるはずの文字列
Mouna Cheikhna 2012

反対票に関しては、私の回答のあるコメントを読むことをお勧めします。
gdoronはモニカ

2

これを選択リストと考えてください:

<select onchange="var optionVal = $(this).find(':selected').val(); doSomething(optionVal)">

                                <option value="mostSeen">Most Seen</option>
                                <option value="newst">Newest</option>
                                <option value="mostSell">Most Sell</option>
                                <option value="mostCheap">Most Cheap</option>
                                <option value="mostExpensive">Most Expensive</option>

                            </select>

次に、選択したオプションを次のようにチェックします。

function doSomething(param) {

    if ($(param.selected)) {
        alert(param + ' is selected!');
    }

}

0

私の場合、selectionが常にtrueである理由がわかりません。だから私が考えることができた唯一の方法は:

var optionSelected = false;
$( '#select_element option' ).each( function( i, el ) {
    var optionHTMLStr = el.outerHTML;

    if ( optionHTMLStr.indexOf( 'selected' ) > 0 ) {
        optionSelected = true;
        return false;
    }
});

0

オプションが選択されているかどうかを確認するだけの場合は、すべてのオプションを繰り返す必要はありません。するだけ

if($('#mySelectBox').val()){
    // do something
} else {
    // do something else
}

注:選択可能にしたい値= 0のオプションがある場合は、if条件を次のように変更する必要があります。 $('#mySelectBox').val() != null


0

オプションの選択状態で特定の値を確認する必要がある場合

$('#selectorId option[value=YOUR_VALUE]:selected')

0

選択したオプションをJavaScriptで確認する場合

最も簡単な方法は、そのタグにonchange属性を追加し、jsファイルに関数を定義することです。htmlファイルに次のようなオプションがある場合は、例を参照してください

 <select onchange="subjects(this.value)">
               <option>Select subject</option>
               <option value="Computer science">Computer science</option>
               <option value="Information Technolgy">Information Technolgy</option>
               <option value="Electronic Engineering">Electronic Engineering</option>
               <option value="Electrical Engineering">Electrical Engineering</option>
 </select>

そして今、jsファイルに関数を追加します

function subjects(str){
    console.log(`selected option is ${str}`);
}

PHPファイルで選択したオプションを確認したい場合

タグにname属性を指定して、phpファイルのグローバル変数/ array($ _GETまたは$ _POST)にアクセスするだけです。htmlファイルが次のようなものである場合は、例を参照してください

<form action="validation.php" method="POST">
             Subject:<br>
            <select name="subject">
               <option>Select subject</option>
               <option value="Computer science">Computer science</option>
               <option value="Information Technolgy">Information Technolgy</option>
               <option value="Electronic Engineering">Electronic Engineering</option>
               <option value="Electrical Engineering">Electrical Engineering</option>
            </select><br>

         </form>

そして、あなたのphpファイルvalidation.phpでは、このようにアクセスできます

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