2011-02-10 3 views
0

私はドロップダウンセレクターがあり、選択に基づいてフォームの他の部分をロードする必要があります。jQueryを使用したリピートセレクターがありません

このセレクタを数回繰り返して、同じオプションが選択されていないことを確認する必要があります。私はすべてのmySelectorの選択されたオプションを実行する必要があると仮定し、オプションが選択されている場合、いくつかのエラーメッセージを表示します。方法はわかりません。

$('.mySelector').change(function(){ 
    var selectForm = '#' + $(this).val(); 
    $('div').next('.fLoad').load('formParts.html ' + selectForm); 
}); 

<select class="mySelector"> 
    <option value="selectOne">Select one</option> 
    <option value="o1">Car details</option> 
    <option value="o2">Boat details</option> 
    <option value="o3">Train details</option> 
    <option value="o4">Bike details</option> 
    <option value="o5">Sub details</option> 
</select> 

<div class='fLoad'> </div> 
    <option value="selectOne">Select one</option> 
    <option value="o1">Car details</option> 
    <option value="o2">Boat details</option> 
    <option value="o3">Train details</option> 
    <option value="o4">Bike details</option> 
    <option value="o5">Sub details</option> 

<div class='fLoad'> </div> 

<select class="mySelector"> 
    <option value="selectOne">Select one</option> 
    <option value="o1">Car details</option> 
    <option value="o2">Boat details</option> 
    <option value="o3">Train details</option> 
    <option value="o4">Bike details</option> 
    <option value="o5">Sub details</option> 
</select> 

<div class='fLoad'> </div> 
+0

あなたのHTMLはファンキーに見えます:オプションタグは閉じられません。 –

+0

現在のコードは、ただ1つのセレクタで閉じるオプションなしで動作します。 HTMLはクローズする必要はありません。しかし、確かに、私は閉じることができます。これに言及してくれてありがとう。 – santa

+1

IDはHTMLドキュメント内で一意である必要があります。イベントハンドラは、IDが 'mySelector'の最初の要素にのみ追加されます。 'next( '#fLoad')'はIDが 'fLoad'であれば次の要素を選択しますが、あなたは* class *' fLoad'を持つ要素しか持っていません。 –

答えて

1

は、boolsにあなたは一度だけのオプションをループに持ってそのように値の辞書を作成します。ここでは

は、私がこれまで持っているものです。

var alreadyUsed = {}; 

$("select").each(function(){ 
    var thisVal = $(this).val(); 
    if(alreadyUsed[thisVal]){ 
     // found a dupe 
    } 

    alreadyUsed[thisVal] = true; 
}); 
+0

これは興味深いと思います。私は$( '。mySelector')内にこれを追加しますか?(function(){function? – santa

+1

もしあなたがそれらを変更するたびにチェックをしたいのであれば、それを確認してください。デフォルトの「1つ選択」の値を追加して、まだ変更されていない選択を無視したい場合は、バットからエラーが発生します –

関連する問題