【问题标题】:How do I get values of input element with the same name as an javascript array?如何获取与 javascript 数组同名的输入元素的值?
【发布时间】:2022-12-21 17:53:40
【问题描述】:

我想获取输入元素的值,这些元素具有相同的名称,name="items[]"
例如:

<div>...<input type="text" name="items[]" value="1" /></div>
<div>...<input type="text" name="items[]" value="2" /></div>
<div>...<input type="text" name="items[]" value="3" /></div>

我希望得到类似的结果:

[1, 2, 3] //that store in an javascript variable.

我需要做一个循环来访问所有元素来获取它的值吗? 请给我一个好的解决方案,无论是 javascript 还是 JQuery。
谢谢

【问题讨论】:

  • 你知道如何接受答案吗?
  • 如果你点击你的个人资料,Alwayz,你可以清楚地看到红色字母:'Have you considered to accept one answer?'你认为这是错误的?
  • 好的,我明白了,但我只是发布一个问题。我会等着看哪个答案对我有用,然后我会投票给他们

标签: javascript jquery


【解决方案1】:
var values = [];
$("input[name='items[]']").each(function() {
    values.push($(this).val());
});

【讨论】:

  • 嗨 Igor,我很抱歉提出不明确的问题,所有元素都在我上面更正的 div 元素中。
  • 这个选择器将选择输入元素,即使它们在 div 内;如果您想确定,可以使用$("div input[name='items[]']")
  • 但它什么也没提醒。我曾经尝试 $('classname').each(function() { values += $(this).val() });但它也什么也没显示
  • 好的,谢谢 Igor,它有效,我的代码有问题,它不起作用,非常感谢 ^^
【解决方案2】:

仅限 JavaScript:

var values = [];
var fields = document.getElementsByName("items[]");
for(var i = 0; i < fields.length; i++) {
    values.push(fields[i].value);
}

警告,见:getElementsByName in IE7

【讨论】:

  • 我认为在 IE 中 getElementsByName 会有问题
  • @igor 同意 jQuery 是可行的方法,但 OP 要求两者都使用
【解决方案3】:

或者使用 jQuery 的 map 函数:

$("div input[name='items[]']").map( function() { return $(this).val(); } ).get();

【讨论】:

  • 小心 .map(),在某些浏览器中它返回一个数组,但在其他浏览器中它返回一个对象m.fn.init[](Chrome)。后一个不能被 JSON.stringify() 字符串化。具体来说,以下两个并不等同:var arr=$('input[name="foo"]').map(function(){return this.value}).get()var arr=[]; $('input[name="foo"]').each(function(){arr.push(this.value)})。在第一种情况下,arr 不是数组,而在后一种情况下是。 JSON.stringify(arr) 对前者失败,但对后者有效。
猜你喜欢
  • 1970-01-01
  • 2014-08-21
  • 2022-09-29
  • 2021-03-21
  • 1970-01-01
  • 2014-03-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多