2013-08-23 7 views
19

選択ボックスにオプションを動的に入力しています。私がこれを行うとき、私は選択ボックスの値を最初のオプションの値にしたい(あなたが好きなら 'デフォルトオプション')。本当にシンプルな音ですが、私はそれを動作させることができません。jQueryを使用して選択ボックスの値を最初のオプションに設定します

var myElement = $('select[name="myName"]'); 

は....以下の3つのバリエーション

// myElement.find('option').first().prop('selected', 'selected'); 
// myElement.val(myElement.find('options').first().val()); 
myElement.prop('selectedIndex', 0); 

を試してみました...しかし、次の行は、私が間違ってつもり空白の警告

alert(myElement.val()); 

を与えますか?あなたはほとんどそれを得た

+0

どのようにオプションを設定していますか? JSFiddleの例を作成できますか? – Phil

+0

私が見ている唯一の理由は、訂正後にも結果として空白になっている場合、最初のオプションに空白の値があることです –

答えて

26

オプションは、あなたができるオプション

myElement.find('option:eq(0)').prop('selected', true); 

する必要がありますオペアンプのeqセレクタを使用します最初のオプションを選択します。

最初のオプションの値がわかっている場合。

myElemeent.val('first value') // Which selects the option by default 

正しいポイントで電話していない場合を除き、2番目のケースがうまくいきます。すなわち、 ajax応答が完了するのを待つ。この取得は、DOM要素(ないjQueryオブジェクト)ですバニラのJavascriptで動作します

myElement[0].selectedIndex = 0; 

doneまたはsuccess(非推奨)ハンドラ

+0

@Phil ..それを指摘していただきありがとうございます –

+0

感謝Sushanth - あなたは私がアヤックスが完了するのを待っていないのは正しいです。 –

+0

@ Sushanth--これはどんなことを引き起こしますか?問題の選択に関連付けられたchange()ウォッチャー? – Plummer

5

、 'オプション' で 's' をドロップします。

myElement.val(myElement.find('option').first().val()); 

Working jsFiddle

+0

まだ見つからないが、まだ動作しません。 –

+0

@KimPrinceなぜですか? [this jsFiddle](http://jsfiddle.net/ZXqfW/)を見てください。私は最後のオプションで "selected"を設定してから、このコードを使用して最初のオプションに戻しました。 –

+0

ありがとうYotam、あなたは正しいですが私は、アヤックスの呼び出しが完了するのを待っていませんでした。 Sushanthの反応を参照してください... –

4

の内側にあなたはまた、次のコードを使用することができることを呼び出して試してみてくださいそのインデックスに基づいて最初のオプションを選択されたものとして設定します。

0

あなたのオプションが値を持って、あなたが行うことができますプレースホルダではないことを確認したい場合は、次の

$('select option').filter(function (index, option) { 
    return option.attributes.value 
}).val() 

HTMLノードが属性valueを持っており、空でないかどうかをチェックしますこの方法。

関連する問題