如何在form.serialize中获取下拉列表的值和文本?

时间:2017-03-16 07:50:40

标签: php jquery html

在我的项目中,我想要表单的序列化数据,但是对于下拉列表,它只给出值,而不是所选择的下拉值的文本。

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

这里给出了= 1.我还想要选择的选项的文本是&#34;问题&#34;。

1 个答案:

答案 0 :(得分:3)

serialize()只会从元素中检索namevalue属性。

要执行您的操作,您可以照常使用serialize(),然后将选定的选项文字附加到其中:

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

console.log(data);
&#13;
<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>
&#13;
&#13;
&#13;

如果您想使用serializeArray(),则需要push()数据到结果对象,如下所示:

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

console.log(data);
&#13;
<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>
&#13;
&#13;
&#13;