我正在尝试从以下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会返回一个数组,而不是一个字符串?这不是一个选择多元素。
答案 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元素,它为你提供了一个数组,而不是一个字符串。