如何在jquery中选择名称为数组的元素?

时间:2015-02-03 12:37:38

标签: javascript jquery ajax post

如何获取这些元素的值并将它们作为数组发布为ajax:

<input type="checkbox" name="Broadcast[m]"/> Members
<input type="checkbox" name="Broadcast[i]"/> IATA agencies
<input type="checkbox" name="Broadcast[n]"/> non-IATA agencies
<input type="checkbox" name="Broadcast[c]"/> Commitees

3 个答案:

答案 0 :(得分:1)

var items = $("input[type=checkbox][name^=Broadcast]"), values = [];
items.each(function(){
    values.push([$(this).attr("name"),$(this).is(":checked")]);
});
console.log(values);

抱歉以前是错的,这里有一个小提琴 fiddle

答案 1 :(得分:1)

您可以使用serialize方法执行此操作。首先在html中为复选框添加值并删除[]内的任何内容,并为每个复选框设置name='Broadcast[]'

$.ajax({
    type:"post",
    url:'your url',
    data:$("form").serialize(),
    success:function(data){
    //do stuff here
    }

});

答案 2 :(得分:1)

试试这个:

首先将您的输入名称更改为名称=&#34;广播[]&#34;

<input type="checkbox" name="Broadcast[]" value="Members"/> Members
<input type="checkbox" name="Broadcast[]" value="IATA agencies"/> IATA agencies
<input type="checkbox" name="Broadcast[]" value="non-IATA agencies"/> non-IATA agencies
<input type="checkbox" name="Broadcast[]" value="Commitees"/> Commitees

然后在jquery中通过ajax发送数组中的数据,创建一个变量来将所有值映射到数组。

<强> jquery的:

var BroadCast = $("input[name='BroadCast\\[\\]']").map(function () { return $(this).val(); }).get();

并将变量BroadCast放入ajax数据中。

$.ajax({
    type:"post",
    url:'your action url',
    data: {BroadCast: BroadCast},
    success:function(data){
    //do what you want here
    }

});

希望这会对你有所帮助。