jquery .val返回选项的文本而不是value标记的内容

时间:2014-01-09 21:06:14

标签: jquery arrays multi-select

我无法理解出了什么问题,而且我已经尝试了我能想到的一切。基本上我有一个多选列表,我试图在一个数组中获取所选的选项文本值,以及另一个数组中的值。

继承人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。这些数组就像它们应该的那样构建,但两个数组都是相同的[&#34; Option1&#34;,&#34; Option2&#34;等]

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

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

我怎样才能让aeArray填充像这样的实际值[&#34; 1&#34;,&#34; 2&#34;,&#34; 3&#34;等]

编辑:上面的HTML是由JavaScript生成的,是的,我有一个额外的&#34;在价值之前。

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>');
}

4 个答案:

答案 0 :(得分:1)

您在"

之前还有一个额外的value
<option "value="1">Option1</option>
        ^Here

答案 1 :(得分:0)

你有“在选项值属性前面。删除它们。

答案 2 :(得分:0)

您的选择错误

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

应该是

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

您的javascript中也缺少分号。可能无关,但无论如何你应该修复它

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

答案 3 :(得分:0)

修复html语法错误后使用.val() jQuery方法

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