使用jQuery将输入响应映射到数组中

时间:2011-06-06 05:32:04

标签: jquery

我在jQuery中有以下代码,它返回一个名为respond的数组。返回的数组基于 输入元素的位置。

var resp = $("input[id^= 'Answer_Response']");
responses: jQuery.map(resp, function (a) { return a.checked; })

<input id="Answer_Response[2]" name="Answer.Response[2]" type="checkbox" /> 
<input id="Answer_Response[0]" name="Answer.Response[0]" type="checkbox" />
<input id="Answer_Response[1]" name="Answer.Response[1]" type="checkbox" />
<input id="Answer_Response[4]" name="Answer.Response[4]" type="checkbox" />
<input id="Answer_Response[3]" name="Answer.Response[3]" type="checkbox" />

所以当输入为:

 false    // for Answer.Response[2]
 true     // for Answer.Response[0]
 true     // for Answer.Response[1]
 false    // for Answer.Response[4]
 true     // for Answer.Response[3]

响应数组看起来像false,true,true,false,true

我需要的是返回的数组基于元素的id号。所以例如我需要一个 返回的数组如下所示:true,true,false,true,false

  true    // for Answer.Response[0]
  true    // for Answer.Response[1]
  false   // for Answer.Response[2]
  true    // for Answer.Response[3]
  false   // for Answer.Response[4]

我有什么方法可以在jQuery中做到这一点?请注意,我无法更改响应的显示方式。我被要求在jQuery中完成所有这些。

我希望有人能提出一些建议。我想我只需要一些不同的方法来进行resp的映射,但我不知道我该怎么做。

1 个答案:

答案 0 :(得分:0)

一种方法是使用each

var resp = [ ];
$("input[id^= 'Answer_Response']").each(function() {
    // Pull the number out of things like "Answer.Response[2]"
    var i   = parseInt(this.id.match(/\d+/)[0], 10);
    resp[i] = this.checked;
});

只要id属性只有一个看起来像数字的子字符串(或者至少第一个匹配是你想要的那个),这应该可以完成工作,并且你的任何空白都没有id属性(或者您将在resp数组中获得一些未定义的条目)。

一个简单的演示:http://jsfiddle.net/ambiguous/hHS2K/