在JavaScript中传递数组HTML元素

在JavaScript中传递数组HTML元素,javascript,jquery,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="che

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

<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”这样的字符串。

我想你应该这样做

<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[]">

我想你想做这样的事情

<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[]">

当然,有更好的方法可以做到这一点,但这回答了您提出的问题


当然,有更好的方法可以做到这一点,但这可以回答您提出的问题。

单选按钮似乎比复选框更适用于此处尝试以下方法:

<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 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]">

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

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

我的答案代码如下:

//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);
    }
});

如果有人有更好的代码,请写在这里,这样我们可以讨论哪一个更好地解决我的问题。

最后,我找到了上面问题的答案。我就写在这里

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

我的答案代码如下:

//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);
    }
});

如果有人有更好的代码,请写在这里,这样我们就可以讨论哪一个更好地解决我的问题。

您想要的方法似乎有点落后;浏览器将只提交选中的复选框,但如下所示:

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[”开头的所有复选框。然后,使用正则表达式提取方括号之间的数字部分,并将其添加到值列表中。

您想要的方法似乎有点落后;浏览器将只提交复选框,但如下所示:

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[”开头的所有复选框。然后,使用正则表达式提取方括号之间的数字部分并添加到值列表中。

浏览器请求时仅发送复选框。您确定您的问题陈述正确吗?如果我的问题不明确,请原谅。我已编辑我的问题。只有复选框由bro请求发送wser。你确定你的问题说得对吗?如果我的问题模棱两可,很抱歉。我已编辑了我的问题,请添加解释,说明如何将其应用于回答问题。如果不清楚,则表示歉意。显然,提交表单时只会发送选中的值,因此我将问题解释为询问如何识别c我的答案是识别所有以“a_r_id”开头的输入检查后,开发人员可以对返回的对象进行处理。@DerekHenderson,你能解释一下如何从返回的对象中获取数组键吗?我是javascript新手。谢谢。name是一个属性,所以你应该使用.prop('name'))或者仅此而已。name:)@DerekHenderson当我尝试您的方法时,出现了一个错误“undefined$1”。为什么会发生这种情况?请添加解释,说明如何应用此方法回答问题。如果不清楚,请道歉。显然,提交表单时只发送选中的值,因此我将问题解释为询问如何识别我的答案将识别所有以“a_r_id”开头的输入检查后,开发人员可以对返回的对象进行处理。@DerekHenderson,你能解释一下如何从返回的对象中获取数组键吗?我是javascript新手。谢谢。name是一个属性,所以你应该使用.prop('name'))或者仅此而已。name:)@DerekHenderson当我尝试您的方法时,出现了一个错误“undefined$1”。为什么会发生这种情况?我必须使用复选框,因为我有一个按钮可以将它们全部选中。毕竟,该复选框是使用行数据id作为数组的键动态生成的。在我上面的问题中,我使用1,2,…,4作为示例。我必须使用复选框box,因为我有一个按钮来检查它们。毕竟,该复选框是使用行数据id作为数组的键动态生成的。在我上面的问题中,我使用1,2,…,4作为示例。我很高兴您能够找到一个解决方案。也许,既然您发现我的答案中至少有一部分是有用的,您可能希望对其进行一次向上投票,甚至将其选为接受的答案。;(顺便说一句,你应该避免使用
new Array()
,而是使用
[]
)@DerekHenderson我怎么能在JavaScript中使用[]?我可以把它声明为var l_c_代理[]?你为什么建议使用它而不是新的Array()?谢谢。
var l_c_代理=[]
var l_c_agent=new Array();
更好,效率更高,仅此而已。我很高兴你能找到一个解决方案。也许,既然你发现我的答案至少有一部分有用,你可能想给它一次投票,甚至选择它作为公认的答案。(顺便说一句,你应该避免使用
new Array()
,使用
[]
相反。)@DerekHenderson我如何在JavaScript中使用[]?我可以将其声明为var l_c_代理[]?为什么您建议使用它而不是新数组()?谢谢。
var l_c_代理=[];
var l_c_代理=新数组()更好、更有效
,仅此而已。我使用AJAX抛出并处理它,而不是使用标准格式提交。我不希望用户离开同一页,因为下面有另一个表显示用户已经选择了什么。您的答案也很有效……您有太多});顺便说一句……:)我使用AJAX抛出并处理它,而不是使用标准格式提交提交。我不希望用户离开同一个p