在JavaScript中传递数组HTML元素

时间:2013-04-12 11:45:32

标签: javascript jquery

我有一系列复选框,如下所示,

<input type="checkbox" value="1" id="a_r_id[1]" name="a_r_id[1]">
<input type="checkbox" value="1" id="a_r_id[2]" name="a_r_id[2]">
<input type="checkbox" value="1" id="a_r_id[3]" name="a_r_id[3]">
<input type="checkbox" value="1" id="a_r_id[4]" name="a_r_id[4]">

在我的页面中......我想通过JavaScript(jQuery AJAX)只提交已选中的一个......我怎么能这样做?

已编辑:

实际上,我想在选中的复选框上获取所有数组键,以便我可以通过ajax发布它。像“1,4”这样的字符串。

5 个答案:

答案 0 :(得分:1)

var keys = [],
    keystring;
$('input[name^="a_r_id"]:checked').each(function () {
    keys.push($(this).attr('name').replace(/a_r_id\[(\d+)\]/, '$1'));
});
keystring = keys.join();

当然,有更好的方法可以做到这一点,但是当你构思它时,这会回答你的问题。

答案 1 :(得分:0)

最后,我找到了上述问题的答案。我会把它写在这里。

问题: 如何从数组HTML元素中获取“key”? (在我的情况下,我只想查看复选框)

我的答案代码是这样的:

//first, i get every checked checkbox using jQuery selector,
//as mentioned by DerekHenderson.
var list_agent = $('input[name^="a_r_id"]:checked');
var l_c_agent = new Array();
//then, i create a loop to loop each object returned.
for(var i=0;i<list_agent.length;i++){
    //after that, i'm using Regular Expression ( match() ) on every returned object id and throw it into some array.
    l_c_agent[i] = list_agent[i].id.match(/[0-9]+/);
}
//finally, i join the array using javascript join() method so that i can pass it using jQuery AJAX as a string to my controller and process it.
var clean_agent_list = l_c_agent.join();
var add_url = 'test.php';
$.ajax({
    url: add_url,
    type: "GET",
    data : { 'list_agent' : clean_agent_list },
    success: function(data_return) {
        //alert(data_return);
    }
});

输出将是这样的(如果使用我上面的示例问题,我们只检查id为1,3和4的元素)

1,3,4

如果有人有更好的代码,请在这里写下来,以便我们讨论哪个更好解决我的问题。

答案 2 :(得分:0)

你想要的方法似乎有点倒退;浏览器已经只提交了选中的复选框,但是这里是:

var re = /\[(\d+)\]$/,
    numbers = [];

$('input[name^="a_r_id\\["]:checked').each(function() {
    numbers.push(+this.name.match(re)[1]);
});

console.log(numbers.join(','));

选择名称以“a_r_id [”开头的所有复选框。然后,使用正则表达式提取方括号之间的数字部分并添加到值列表中。

答案 3 :(得分:-1)

我想你想做这样的事情

<input type="checkbox" value="1" id="a_r_id_1" name="a_r_id[]">
<input type="checkbox" value="2" id="a_r_id_2" name="a_r_id[]">
<input type="checkbox" value="3" id="a_r_id_3" name="a_r_id[]">
<input type="checkbox" value="4" id="a_r_id_4" name="a_r_id[]">

答案 4 :(得分:-1)

Radio Buttons似乎更适用于此处,而非复选框尝试此操作:

<input type="radio" name="radiogroup" value="1" id="a_r_id[1]" name="a_r_id[1]">
<input type="radio" name="radiogroup" value="2" id="a_r_id[2]" name="a_r_id[2]">
<input type="radio" name="radiogroup" value="3" id="a_r_id[3]" name="a_r_id[3]">

您可以使用

获取所选值
$("input:radio[name=radiogroup]").click(function() {
var value = $(this).val();
//
do something with var
//
});