select by JQueryにオプションが既に存在するかどうかを確認するにはどうすればよいですか?


169

select by JQueryにオプションが既に存在するかどうかを確認するにはどうすればよいですか?

selectに動的にオプションを追加したいので、重複を防ぐためにオプションが既に存在するかどうかを確認する必要があります。

回答:


333

すでに存在する場合、これはtrueと評価されます。

$("#yourSelect option[value='yourValue']").length > 0;

5
Jquery 1.6以降にアップグレードし、yourValueを引用符で囲みます
Bob

1
うん。引用は非常に重要です。
bobetko

2
yourValueを引用符で囲まなくてもjquery 1.7.1で機能します
Mathias F

上記のソリューションでは、caseまたはtoLowerCaseをどのように実装できますか?これには、ドロップダウンリストに$ .eachが必要ですか?
Ben Sewards 2013年

1
大文字と小文字を区別するマッチングを実装したい場合は、どうすればよいですか?単純な$ .each関数を使用しますか?
Chaudhry Waqas 2017

21

jQueryを使用する別の方法:

var exists = false; 
$('#yourSelect  option').each(function(){
  if (this.value == yourValue) {
    exists = true;
  }
});

6
-1他のすべての答えのようにjQueryにループさせるのではなく、基本的にループを自分で行っています。これは機能しますが、車輪を再発明しています。
Peter

14
-1に値するかどうかはわかりません。これはプロセスを明示的に示しており、初心者には良いことです。確かに最良の答えではありませんが、それは有効なものです。
roberthuttinger 2013

1
そして、私のような手動のアプローチが好きな人もいます。これは、他のように0または1を生成して変換する代わりに、そこにブール値を追加するステップも組み合わせます。どちらの方法でも2つのステップを実行する必要があるため、どちらのアプローチも問題ないと思います。これは、私にはプロセスからより見えやすく、たとえば空白文字の長さを判断しないようにすることでエラーが発生しにくくなり.lengthます。
vapcguy 2015

3
これらの1つに加えて、yourValueの文字について心配する必要もありません
Fabio C.

1
これとalnort29の答えは、「yourValue」が何であるかがわからない場合(たとえば、ユーザー入力の場合)、既存の値を確認するための最良の方法です。「jQueryにそれをさせる」ためだけに単一の文字列を構築するには、入力のサニタイズを行う必要があり、何十年もの間SQLを悩ませてきたコードプラクティスになってしまいます。したがって、-1は完全に不当です。質問には、「動的に」値を挿入したいということさえ含まれています。文字列を動的に一緒にパッチしないでください。また、「password = "'+ string +'"であるユーザーから1を選択」しないでください。
Aaa 2017

20
if ( $("#your_select_id option[value=<enter_value_here>]").length == 0 ){
  alert("option doesn't exist!");
}

2
閉じ括弧 "option [value = <enter_value_here>]"
KBがあり

17
var exists = $("#yourSelect option")
               .filter(function (i, o) { return o.value === yourValue; })
               .length > 0;

これには、自動的に値をエスケープするという利点があり、テキスト内のランダムな引用符をはるかに扱いやすくなります。


2

動作しません、これを行う必要があります:

if ( $("#your_select_id option[value='enter_value_here']").length == 0 ){
  alert("option doesn't exist!");
}

1

それは私を助けます:

  var key = 'Hallo';

   if ( $("#chosen_b option[value='"+key+"']").length == 0 ){
   alert("option not exist!");

    $('#chosen_b').append("<option value='"+key+"'>"+key+"</option>");
    $('#chosen_b').val(key);
   $('#chosen_b').trigger("chosen:updated");
                         }
  });

0

同様の問題がありました。selectコントロールのループで毎回domを介して検索を実行するのではなく、jqueryのselect要素を変数に保存してこれを行いました。

function isValueInSelect($select, data_value){
    return $($select).children('option').map(function(index, opt){
        return opt.value;
    }).get().includes(data_value);
}

0

他のほとんどの答えは私のために働きましたが、私は.find()を使用しました:

if ($("#yourSelect").find('option[value="value"]').length === 0){
    ...
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.