2012-04-24 13 views
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の既知の問題ですか?私はそれについての情報を見つけられませんでしたか?考えられる回避策?おかげ<option>のval()は、ie7の値の代わりにテキストを返します。

+0

実行しているjQueryのバージョンは何ですか? – Matt

+0

これは、選択した値を取得する方法ではありません。 'select'要素の' .val() 'を呼び出します。 –

+1

Fyiでは、 '.each()'では通常、引数を受け入れる必要はありません。要素は 'this'でも利用できます。私が知っている – ThiefMaster

答えて

5

であるべきであるが、主に値を取得するために使用される

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

はあなただけ selectを反復しているが、それが実際に動作しない理由ではなく、実際の select要素、元のコードが効果的に optionval()を呼び出して、その上 .val()を呼び出すことができ、あなたが望むものを達成するために、 。

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

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

val()multipleの場合の値の配列を返す能力を有するの追加ボーナスを有する選択:.val()メソッドは、主に取得するために使用されている(私を強調する)

入力、選択、テキストエリアなどのフォーム要素の値は です。 <select multiple="multiple">要素の場合、.val()メソッドは、選択された各オプションを含む配列 を返します。オプションが選択されていない場合は、 nullを返します。

0

はあなただけで、他の値は何も選択していない取得する行の上に書く必要があり

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

を選択し、単一のための

を試してみてください。

multislectことがhttp://api.jquery.com/val/

.val()でドキュメントによれば

var result = ""; 
$('#idselect option:selected').each(function(i, item) 
{  
    result += $(this).val() + ", "; 
}); 
+4

イマイチ '$(val)で' $(この)に '' eqvivalentをそのしておこうか? – Johan

+0

彼はそれがあなたが必要とするすべてのコードだと思います。彼は機能コードだけを置き換えているわけではありません。 –

+1

OPのコードでは、(最外層にある) 'this'は明らかに**選択要素ではありません(これは*一つの' select'要素を含んでいます)ので、これはうまくいきません。 –

0

オプション自体の値ではなくオプションの値を求めているので、これは正常な動作です。

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

$(this).find('select').each(function() { 
    var val = $(this).val(); 
}); 
+0

'$(this)'はjquery dom要素を返しますが、 'this'は何を返しますか? – Johan

+0

@Johan、 'this'は通常、' document.getElementById( 'id') 'のように受け取られる非jqueryのラップされたHTML要素を返します。 – Starx

+0

' this' == '$(this).get(0)'または ' $(これ)[0] '? – Johan

関連する問題