【问题标题】:jquery .val returning the text of the option rather than the contents of the value tagjquery .val 返回选项的文本而不是值标签的内容
【发布时间】:2014-01-09 21:06:14
【问题描述】:

我不明白出了什么问题,我已经尝试了我能想到的一切。基本上我有一个多选列表,我试图在一个数组中获取选定的选项文本值,并在另一个数组中获取值。

这是 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。数组是按应有的方式构建的,但是两个数组都是相同的,例如 ["Option1","Option2", etc]

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

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

我怎样才能让 aeArray 填充像这样的实际值 ["1","2","3", etc]

编辑:上面的 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>');
}

【问题讨论】:

  • 这真的是 HTML 的逐字复制吗?
  • W3C 有一个很棒的validator,你应该试试看!

标签: jquery arrays multi-select


【解决方案1】:

你在value之前有一个额外的"

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

【讨论】:

  • 感谢您指出这一点。我在上面编辑了我的问题以解释错误是如何发生的。
  • @Mikarma - 很高兴为您提供帮助。
【解决方案2】:

选项值属性前面有 "。删除它们。

【讨论】:

    【解决方案3】:

    你的选择是错误的

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

    应该是

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

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

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

    【讨论】:

    【解决方案4】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-06
      • 2017-08-10
      • 2018-04-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-16
      • 2016-10-21
      • 2023-03-08
      相关资源
      最近更新 更多