1

我正在尝试从以下选择元素中获取值。假设用户选择了第一个选项。

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

的JavaScript:

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

为什么 IE7 返回一个数组,而不是单个字符串?这不是一个选择多个元素。

4

1 回答 1

8

问题是type似乎被错误地添加到select元素的属性(也许它最初是一个文本input元素,它被切换到了select)?。删除属性以解决问题。

在幕后,jQuery 使用以下布尔值来确定您的select元素是选择一个(标准选择框)还是选择多个(选择具有 multiple 属性的元素)。

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

设置该type属性会覆盖'select-one'IE7 中的默认值,这会导致此布尔值为 false。由于布尔值是假的,这告诉 jQuery 你有一个多选元素,它为你提供了一个数组,而不是单个字符串。

于 2013-03-05T19:50:02.853 回答