2014-01-09 42 views
0

我不明白髮生了什麼問題,我嘗試了所有我能想到的。基本上我有一個多選擇列表,我試圖讓選定的選項文本值在一個數組中,並在另一個數組中的值。jquery .val返回選項的文本而不是值標籤的內容

繼承人的HTML ...

<select multiple="multiple" id="adaptequip" name="adaptequip"> 
<option "value="1">Option1</option> 
<option "value="2">Option2</option> 
<option "value="3">Option3</option> 
<option "value="4">Option4</option> 
<option "value="5">Option5</option> 
<option "value="6">Option6</option> 
<option "value="7">Option7</option> 
</select> 

這裏的的JavaScript/jQuery的創建陣列。這些陣列是建立像它們應該的,但兩個數組都是這樣的[「選項1」,「選項2」,等]

var aeArray = []; 
var textvals = []; 

$('#adaptequip :selected').each(function(i, selected){ 
    textvals[i] = $(this).text(); 
    aeArray[i] = $(this).val() 
}); 

我怎樣才能獲得aeArray來填充這樣的實際值[「1」相同,「2」,「3」,等]

編輯:HTML以上是由JavaScript生成的,是的,我有「前值

Object.keys(adaptequip) 
    .sort(function(a,b) { 
    return b.localeCompare(a) 
    }) 
for(key in adaptequip) { 
    var val = adaptequip[key]; 

$('#adaptequip').append('<option "value="' + val.aeid + '">' + val.aename + '</option>'); 
} 
+0

後jQuery的方法是真正的HTML的完整副本? – Alexander

+2

W3C有一個很棒的[** validator **](http://validator.w3.org/),你應該試試看! – adeneo

回答

1

你有一個額外"value

<option "value="1">Option1</option> 
     ^Here 
+0

謝謝你指出。我編輯了我的問題以解釋錯誤是如何發生的。 – Mikarma

+0

@Mikarma - 很樂意幫忙。 – Krishna

0

你。」一個額外的選項值前屬性。刪除它們。

0

權利。您的選擇是錯誤的

<option "value="1">Option1</option> 

應該

<option value="1">Option1</option> 

您還缺少在JavaScript分號。也許無關,但你無論如何都應該修復它

aeArray[i] = $(this).val(); 
+0

javascript中的分號是可選的,如果它們在新行中。 http://www.codecademy.com/blog/78-your-guide-to-semicolons-in-javascript – Krishna

+0

@克里希納這是真的。我一直在使用jsLint很長時間,它只是感覺像一個錯誤。 – Rondel

0

使用.val()固定的HTML語法錯誤

`$('#adaptequip').val()` 
// ["1", "2"] 
相關問題