如何选择具有相同名称的所有输入并按名称对其进行索引
我必须处理由第三部分生成的表单。 此表单提供了一些复选框“多选”属性。 但是输入名称是相同的,并且PHP $ _POST无法处理相同的键(仅处理最后一个数据)。
以下是表单的示例:
我想解析所有复选框输入,只获取相同名称输入的组,并在其名称后附加“[]”…
我想在jQuery处理后得到什么:
有没有办法识别具有相同名称的输入组?
如果存在具有相同名称的另一个项目,则会将[]
附加到每个复选框项的名称。
var name_map = {}; $("input[type=checkbox]") // for all checkboxes .each(function() { // first pass, create name mapping var name = this.name; name_map[name] = (name_map[name]) ? name + "[]" : name; }) .each(function() { // replace name based on mapping this.name = name_map[this.name]; });
演示: http : //jsfiddle.net/gnfsG/
试试这个:
var group = $('input[name="attr1"]'); if (group.length > 1){ group.each(function () { $(this).attr("name",$(this).attr("name")+"[]"); }); }
在您的情况下,您将需要使用$('input[name^="attr"]')
。 因为你的物品有attr1
, attr2
, attr3
等。上面的选择器将匹配所有。
你可以在行动中查看这个@ http://jsfiddle.net/cT78Y/2/
$('input[name^="attr"]:checkbox').each(function(i){ $(this).attr("name",$(this).attr("name")+"[]"); });
这会给你。
希望这对你有所帮助。
这是一个很长的解决方案
var array =[]; $('input[type="checkbox"]').each(function(){ array.push($(this).attr('name')); }); var sorted_arr = array.sort(); // You can define the comparing function here. // JS by default uses a crappy string compare. var results = []; for (var i = 0; i < array.length - 1; i++) { if (sorted_arr[i + 1] == sorted_arr[i]) { results.push(sorted_arr[i]); } } var names = []; names = jQuery.unique(results); $.each(names ,function(key,value){ $('input[name ="'+value+'"]').attr("name",value+"[]"); });
$("input[name=attr\\[\\]]");
获取name = attr[]
所有输入