4
$(this).find('select option:selected').each(function (i, val) {

    var selectedValue = $(val).val(); //this returns the text from the option instead of the value
});

これは ie7 の既知の問題ですか? 私はそれについての情報を見つけませんでしたか?考えられる回避策 ありがとう

4

3 に答える 3

5

http://api.jquery.com/val/のドキュメントによると

.val()にのみ適用されます

.val()メソッドは、主にinput、select、textareaなどのフォーム要素の値を取得するために使用されます。要素の場合<select multiple="multiple">、.val()メソッドは、選択された各オプションを含む配列を返します。オプションが選択されていない場合は、nullを返します。

select必要なことを実現するには、を繰り返して呼び出すことができ.val()ます。元のコードは、実際の要素ではなく、効果的に呼び出しval()ているため、実際には機能しません。optionselect

$(this).find('select').each(function (i, val) {

    var selectedValue = $(this).val(); 
});

val()selectの場合に値の配列を返す機能を持つという追加のボーナスがありmultipleます:(私のものを強調してください)

.val()メソッドは、主にinput、select、textareaなどのフォーム要素の値を取得するために使用されます。要素の場合<select multiple="multiple">、.val()メソッドは、選択された各オプションを含む配列を返します。オプションが選択されていない場合は、nullを返します。

于 2012-04-24T10:36:55.027 に答える
0

要素自体ではなくオプションの値を要求するため、これは予期される動作です。

物事を過度に複雑にしないでください。

$(this).find('select').each(function() {
   var val = $(this).val();
});
于 2012-04-24T10:43:40.533 に答える
0

試す

シングルセレクト用

var selectedValue = $(this).val();

選択した値を取得するには、上記の行に書き込む必要があります。

マルチセレクトの場合は

var result = ""; 
$('#idselect  option:selected').each(function(i, item)
{     
   result += $(this).val() + ", "; 
}); 
于 2012-04-24T10:35:12.900 に答える