2013-02-25 13 views
5

私はおそらく私がばかげているという面白い小さな問題にぶつかってきました。JQueryが複数のドロップダウンオプションを選択するように設定しました

私はこのように少し見える選択ボックスがあります。オプションは、私は、デフォルト値を選択しようとしていた、月の日数を表しており、今31

に上がる

<select id="dom_" name="dom_"> 
    <option value="1">1</option> 
    <option value="2">2</option> 
    <option value="3">3</option> 
    <option value="4">4</option> 
    ... 

を情報を持つフォームが(編集用に)ロードされたときに、私はそれをかなりうまく動作させることができませんでした。

は、私はいくつかの前のSOの質問で見つかったこのスニペットを使用してみました:

$("#dom_ option[value$='" + 2 + "']").attr('selected', true); 

この行が実行され、それが選択する第二のオプションを設定しますが、それはまた、同様に、選択に他の2XまたはX2のオプションを設定します。たとえば、12と22も選択されるように設定されます。

の場合は、しかし、私はこれを使用します。

$("#dom_ option").each(function() 
{ 
    if ($(this).val() == 2) 
    { 
     $(this).attr('selected', true); 
    } 
    else 
    { 
     $(this).attr('selected', false); 
    } 

}); 

を次に右のオプションが選択されてしまいますが、SELECTボックスは更新されません。

私は手動で$("#dom_").val(2);を呼び出してボックスを更新する必要があります。

私の質問は、最初のオプションが機能しないのはなぜですか、なぜ2番目のオプションが自動更新されないのですか?

また、$("#dom_")経由SELECTオブジェクトを取得し、オプションを取り、trueにselectedの設定に対して、それに.valを呼び出すの違いは、正確に何ですか?両方とも同じPOSTまたはGETデータを返信しますか?

jsFiddleはこれをうまく示しています。

jQuery 1.6.4を使用していますが、jsFiddleの新しいバージョンで同じ問題を再現できます。

この質問が単純すぎる場合はお詫び申し上げます。 JavaScriptとJQueryについてはまだまだアマチュアです。

+0

がリセットされますよう、else場合は不要であるあなた」理由がありますhtml属性ではなくjQueryでこれをやっていますか? – Colleen

+0

'$("#dom_ option [value = '2'] ")。prop( 'selected'、true);' 2を変数にする必要がない場合... –

答えて

6

末尾に($=)を使用していますが、代わりにvalue=を使用してください。これは、指定した値とまったく同じです。

$("#dom_ option[value='" + 2 + "']").attr('selected', true); 
+0

'$ ='がしました。どうもありがとう! – zermy

1

それはあなたがJavaScriptでこれを実行する必要はありませんシンプルなデザインに十分な(すなわち、それは静的なコンテンツだ場合、あなたは、単純なデフォルトを必要とする)のように聞こえます。 htmlオプションタグに "selected"属性を適用することができますか?

<select id="dom_" name="dom_"> 
    <option value="1">1</option> 
    <option value="2" selected="selected">2</option> 
    <option value="3">3</option> 
    <option value="4">4</option> 
    ... 
+1

Nahは、クリックした項目に応じてコードを動的に選択します(バックエンドからAJAXまでの情報を取得します)。しかし、静的だった場合は、これを行っていました。 – zermy

1

の両方が与えられた文字列と正確に終了値を持つ指定された属性を持つ要素を選択します

1)のjQuery Ends With Selector[name$="value"])を1として機能するようになりました。

$("#dom_ option[value='" + 2 + "']").attr('selected', true); 

2)2番目の例では、それはselectedオプション

$("#dom option").each(function() 
{ 
    if ($(this).val() == 2) 
    { 
     $(this).attr('selected', true); 
    } 
}); 

チェックこのJsfiddlehttp://jsfiddle.net/NUTWR/

+0

ええ、そこに '$ ='を投げてはいけません。 2回目のオプションについては、 'else'は毎回' selected'をリセットすると 'SELECT'ボックスが毎回リフレッシュされたのでそれを投げていたと思いますか? ありがとうございます。 :) – zermy

+0

@zermyよろしくお願いします! – ssilas777

関連する問題