2

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

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

4

5 回答 5

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();

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

于 2013-04-12T11:47:41.660 回答
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[”开头的复选框。然后,使用正则表达式提取方括号之间的数字部分并添加到值列表中。

于 2013-04-12T14:05:26.790 回答
0

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

问题:如何从数组 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);
    }
});

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

1,3,4

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

于 2013-04-12T13:55:46.647 回答
-1

单选按钮似乎在这里更适用,而不是复选框试试这个:

<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
//
}); 
于 2013-04-12T11:53:52.737 回答
-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[]">
于 2013-04-12T11:47:10.043 回答