2017-01-19 3 views
0

私はJQuery 1.12を使用しています。 JQueryを使用してメニュー項目の選択されたインデックスを取得するのに問題があります。私はこれを持っています:selectedIndexプロパティが選択されたオプションを返さないのはなぜですか?

<select class="selectField selectMenu form-control" name="user[address_attributes][state_id]" id="user_address_attributes_state_id"><option value="">Select State</option> 
    <option value="3526">Alabama</option> 
    <option value="3556">Alaska</option> 
    <option selected="selected" value="3547">Arizona</option> 
    <option value="3510">Arkansas</option> 
    <option value="3542">California</option> 
    <option value="3543">Colorado</option> 
    <!-- rest omitted for brevity --> 
</select> 

"選択された"は、 "アリゾナ"オプションの横に設定されていることがわかります。しかし、私は試してみてseletedインデックスを検索するためにjQueryのを使用する場合、それだけでゼロを返し...

$('#user_address_attributes_state_id')[0].selectedIndex 
0 

しかし、私はその値によってオプションを選択したとき、私はそれが選択されているtaht見ていますか...

$('#user_address_attributes_state_id option[value="3547"]').attr("selected") 
"selected" 

私のHTMLには何も選択されていないことがわかります。 jQueryを使用してメニューの選択したインデックスを正確に返すにはどうすればよいですか?

+0

あなたは '$( '#のuser_address_attributes_state_id')実行しています[0] .selectedIndex'をコンソールかページから?それは私のページで実行するときに動作します。 – j08691

+0

@cale_b '[0]'はjQueryオブジェクトを参照し、基底のDOMノードを返します。 https://api.jquery.com/get/を参照してください。「各jQueryオブジェクトも配列として装っているので、配列逆参照演算子を使用してリスト項目を取得することができます: " – j08691

+1

@ j08691 - クール、情報ありがとう!私は常に何か新しいことを学んでいます! –

答えて

2

は、選択されたオプションを取得します:

var selected_option = $('#user_address_attributes_state_id option:selected'); 

と、選択したインデックス:value="3547"によって

var selected_index = $('#user_address_attributes_state_id option:selected').index(); 

と選択オプション:

$('#user_address_attributes_state_id').val(3547); 
+0

優れており、徹底しています。いい答え。 –

+0

第3のオプションniceについては決して考えなかった。 – zer00ne

+0

私は選択したインデックスを探しているので、 "$( '#user_address_attributes_state_id option:selected').index()"という2番目のオプションを試しましたが、上記のHTMLの場合はゼロを返しています。 <オプション値= "3547" を選択= "選択">アリゾナ州 <オプション値= "3510">アーカンソー ...」 –

関連する問題