2017-03-16 124 views
1

在我的項目中,我想要表單的序列化數據,但對於下拉列表,它只給出這些值不是所選下拉值的文本。如何在form.serialize中獲取下拉的值和文本?

<select name='attend'> 
    <option value="1" selected="selected">Question</option> 
    <option value="2">Attending</option> 
    <option value="3">not-attending</option> 
</select> 

這裏它給出了= 1。我還希望那個選擇的選項是「問題」的文本。

回答

1

serialize()將僅檢索元素的namevalue屬性。

要做到你需要什麼,你可以使用serialize()爲正常,則選定選項的文本追加到它:

var data = $('form').serialize() + '&attendText=' + $('select option:selected').text(); 
 

 
console.log(data);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<form> 
 
    <select name='attend'> 
 
    <option value="1" selected="selected">Question</option> 
 
    <option value="2">Attending</option> 
 
    <option value="3">not-attending</option> 
 
</select> 
 
</form>

如果你想使用serializeArray()你需要push()的數據生成對象,如下所示:

var data = $('form').serializeArray(); 
 
data.push({ 
 
    name: 'attendText', 
 
    value: $('select option:selected').text() 
 
}); 
 

 
console.log(data);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<form> 
 
    <select name='attend'> 
 
    <option value="1" selected="selected">Question</option> 
 
    <option value="2">Attending</option> 
 
    <option value="3">not-attending</option> 
 
</select> 
 
</form>

+0

但我使用的是serializeArray(),當我試圖連接下拉的值,因爲它顯示像[對象對象]&attendText =控制檯中的商業意味着它丟失了其他數據? –

+0

'serializeArray()'返回一個數組,而不是像'serialize()'這樣的字符串。在這種情況下,您需要使用'push()'添加具有所需數據的新對象。 –

+0

使用哪種格式,我必須將所選文本連接到serializedArray? –

相關問題