【问题标题】:How do I get an array from inputs in JQUERY?如何从 JQUERY 中的输入中获取数组?
【发布时间】:2011-08-08 18:56:33
【问题描述】:

我有一组输入来获取玩家信息:

<select name="playerSport" class="playerSport">...</select>
<input type="text" name="playerPosition" class="playerPosition" />
<input type="text" name="playerNumber" class="playerNumber" />
<button id="submit">Submit</submit>

每个字段可以有 n 个。我在这个表单中使用 AJAX,所以我想将每个字段拉到一个数组中。每个运动、位置和号码都有一个数组。

我查看了这些页面中的示例: jquery.val()jquery.map()

我试过了:

var sport = $('input[name="playerSport"').val() || [];
var sportList = sport.join(",");

var sport = $('.playerSport').val() || [];
var sportList = sport.join(",");

$('input[name="playerSport"').map().get().join(",");

$('.playerSport').map().get().join(",");

这些返回空白结果。很可能我错过了一些相当明显的东西。有什么想法吗?

【问题讨论】:

  • $('.playerSport').val() 这些只会返回一个值而不是数组,那么你怎么能 .join ???
  • 这可能不是主要问题,但您在$('input[name="playerSport"') 上缺少右括号,它应该是第一行和第七行的$('input[name="playerSport"]')

标签: jquery arrays select textinput


【解决方案1】:
var a = $.map($(".playerSport,.playerPosition,.playerNumber"), function(el) {
 return $(el).val();
});
// now 'a' is an array containing the values.

【讨论】:

  • 啊!我必须退货。酷,做到了。一旦时间用完,我会选择这个作为答案。谢谢!
  • 可以和$("...").map(function (el) {...}做同样的事情
【解决方案2】:

另一种选择是将函数传递给.val()

var values = [];
$(":input").val(function(index, value){
    values.push(value);
});

如果您想选择所有&lt;select/&gt;&lt;input type="text"/&gt;&lt;textarea/&gt; 元素,也可以使用:input

Code example on jsfiddle

【讨论】:

  • 您在滥用.val 功能。为此使用.map.val 旨在将每个元素的值设置为函数的返回值。
【解决方案3】:

.val()will return an array 用于具有多个值的元素(如多值&lt;select&gt;),但它不会返回所选节点集中每个元素的值数组。

您需要在回调函数中建立一个数组,可能使用$.map

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-09
    • 2023-03-12
    • 2022-11-13
    • 1970-01-01
    • 1970-01-01
    • 2012-04-09
    相关资源
    最近更新 更多