2013-03-05 79 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

相關問題