为什么jQuery.val在Internet Explorer 7(IE7)中返回数组而不是字符串?

时间:2013-03-05 19:50:03

标签: jquery internet-explorer-7

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

<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会返回一个数组,而不是一个字符串?这不是一个选择多元素。

1 个答案:

答案 0 :(得分:8)

问题是type属性似乎被错误地添加到select元素中(可能它最初是文本input元素,并且它已切换为{{1 }})?删除该属性以解决问题。

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

select

设置var IsSelectOne = elem.type === "select-one" || elem.selectedIndex < 0; 属性会覆盖IE7中的默认值type,这会导致此布尔值为false。由于boolean为false,这告诉jQuery你有一个select-multiple元素,它为你提供了一个数组,而不是一个字符串。