【问题标题】:How to fetch textbox array value using javascript/jquery如何使用 javascript/jquery 获取文本框数组值
【发布时间】:2010-08-19 09:50:49
【问题描述】:

我有一个这样的文本输入数组:

<input type="textbox" name="mobileno[]"><br>
<input type="textbox" name="mobileno[]"><br>
<input type="textbox" name="mobileno[]"><br>

它们是在运行时使用“添加更多”按钮生成的。

有没有办法可以使用 jQuery 来获取文本输入值并将其传递到 ajax 请求中?

我创建了一个 ajax 请求,但我无法以 name=value 模式获取文本输入数组的值。

【问题讨论】:

  • textbox 不是 type 属性的正确值。你只想要type="text"
  • 幸运的是“文本”是默认类型,未知类型通常被视为默认类型,因此它在大多数浏览器中仍然可以使用。但这只是一个快乐的意外。

标签: javascript jquery arrays


【解决方案1】:

你可以这样做:

$('input[name="mobileno[]"]').each(function(){
  alert($(this).val());
});

^= 查找名称以 开头的元素,mobileno 文本和后来的 each 用于遍历所有元素以获取它们的值。

更多信息:

【讨论】:

  • 不需要“以选择器开头”。在选择器中使用方括号绝对有效:$('input[name="mobileno[]"]')
【解决方案2】:

试试这个:

var text= new Array();
$("input[name='mobileno[]']").each(function(){
    text.push($(this).val());
});  

如果你警告变量文本,你将得到逗号分隔的输出。

【讨论】:

    【解决方案3】:

    首先:这不是“文本框[es] 数组”。 HTML 中没有数组这样的东西。它只是多个文本框,它们都碰巧具有相同的名称,而该名称恰好在名称中带有方括号。名称中的方括号在 HTML 中没有特殊含义。 (PHP 需要它们,但这是另一回事)。

    第二个:type="textbox" 错了。只是type="text"。你很幸运,因为"text" 是浏览器在发现无效值(例如textbox)时回退到的默认值。

    如果您需要在标准 name=value 模式中获取表单的值(用 &amp; 分隔),jQuery 为表单提供了 serialize 方法:

    alert($("#your-form-id").serialize());
    

    http://api.jquery.com/serialize/

    【讨论】:

    • 我不确定 serialize() 是否可以在这里工作,因为 name 属性的值是 uri 编码的,所以 @987654329 @ 变为 %5B%5D
    • 这有关系吗?我会认为这只会是一件好事。
    • HTML 中没有数组这样的东西,但 JavaScript 中有 。 (通常在处理元素的“数组”时,您实际上会有一个 NodeList,但这很少会产生很大的不同)。
    【解决方案4】:
    var data = $('input[name="mobileno[]"]').map(function(){
      return this.name + '=' + this.value;
    }).get().join('&');
    alert(data);
    

    这会给你一个类似mobileno[]=value&amp;mobileno[]=value&amp;mobileno[]=value的东西。 然后你可以在你的 ajax 请求中传递它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-19
      相关资源
      最近更新 更多