1

次の選択要素から値を取得しようとしています。ユーザーが最初のオプションを選択したとします。

<select class="your-class" type="text">
    <option value='one'>One</option>
    <option value='two'>Two</option>
    <option value='three'>Three</option>
</select>

ジャバスクリプト:

$("select.your-class").val()
//returns ["one"] in IE7, returns "one" in other browsers

IE7 が単一の文字列ではなく配列を返すのはなぜですか? これは複数選択要素ではありません。

4

1 に答える 1

8

問題はtype、要素に誤って追加されたと思われる属性ですselect(元はテキストinput要素で、に切り替えられた可能性がありselectます)?。問題を解決するには、属性を削除してください。

内部では、jQuery は次のブール値を使用して、select要素が選択 1 (標準の選択ボックス) であるか複数選択 (複数属性を持つ選択要素) であるかを判断しています。

var IsSelectOne = elem.type === "select-one" || elem.selectedIndex < 0;

属性を設定すると、IE7typeのデフォルト値がオーバーライド'select-one'されるため、このブール値が false になります。ブール値は false であるため、これは複数選択要素があることを jQuery に伝え、単一の文字列ではなく配列を提供します。

于 2013-03-05T19:50:02.853 に答える