0

ユーザーが新しいオプションをメニューに追加できるようにするテキスト要素とともに、HTML プルダウン メニューがあります。追加されるすべてのオプションが一意であることを確認したいと思います。次の 2 行は、私が考えた最初のオプションでした (すべてのオプションのオプション値 = innHTML)。これに対するよりエレガントな解決策があるかどうか疑問に思っています.2行目はぎこちないようです. また、new_name 文字列内のスペースも処理しません。

var new_name = document.getElementById("preset_name").value
var unique_name = $("option[value="+new_name+"]").length === 0 ? true : false 
4

2 に答える 2

0

このようなものが必要ですか?

HTML:

<select id="myselect">
  <option value="volvo">Volvo</option>
  <option value="saab">Saab</option>
  <option value="mercedes">Mercedes</option>
  <option value="audi">Audi</option>
</select> 
<input id="newoption" type="text" />
<button id="check">Check</button>

jQuery:

$(document).ready(function() {
    $("button#check").click(function() {
        var newOpt = $("input#newoption").val();
        $("#myselect option").each(function(){
            var text = $(this).val();
            if(newOpt.length>0 && text.indexOf(newOpt)!=-1){
                console.log("already present!");
            }
        });
    });
});

jsfiddle

于 2013-07-31T23:23:56.197 に答える
0

質問に対する 2 つのコメントを組み合わせると、1 行に簡素化できます。

var unique_name = $("option[value="+$("#preset_name").val()+"]").length === 0;

=== は真または偽の値になるため、三項は必要ありません。テスト値が再度必要になる場合を除き、変数に格納する必要さえありません。jQuery を使用して取得するだけです。

于 2013-07-31T22:44:19.150 に答える