2013-03-05 81 views
1

我试图从下面的select元素中获取值。假设用户选择第一个选项。为什么jQuery.val在Internet Explorer 7(IE7)中返回数组而不是字符串?

<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返回而不是单个串阵列,?这不是一个多选的元素。

回答

8

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

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

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

设置type属性覆盖的'select-one'在IE7的默认值,这将导致这个布尔是假的。由于布尔值为false,这告诉jQuery您有一个select-multiple元素,并且它为您提供一个数组,而不是一个字符串。

+0

+1 for for the over-the-top analysis .. – 2013-03-05 19:56:37

相关问题