我正在使用以下插件,但是每次创建新的fom字段时,它都不会增加字段名称,我该如何修复此插件,无法更改,因为我们在此方面遥遥领先
/*
Title: Cozeit More plugin by Yasir Atabani
Documentation: na
Author: Yasir O. Atabani
Website: http://www.cozeit.com
Twitter: @yatabani
MIT License, https://github.com/cozeit/czMore/blob/master/LICENSE.md
*/
(function ($, undefined) {
$.fn.czMore = function (options) {
//Set defauls for the control
var defaults = {
max: 5,
min: 0,
onLoad: null,
onAdd: null,
onDelete: null,
styleOverride: false,
};
//Update unset options with defaults if needed
var options = $.extend(defaults, options);
$(this).bind("onAdd", function (event, data) {
options.onAdd.call(event, data);
});
$(this).bind("onLoad", function (event, data) {
options.onLoad.call(event, data);
});
$(this).bind("onDelete", function (event, data) {
options.onDelete.call(event, data);
});
//Executing functionality on all selected elements
return this.each(function () {
var obj = $(this);
var i = obj.children(".recordset").length;
var divPlus = '<div id="btnPlus" class="btnPlus"/>';
var count = '<input id="' + this.id + '_czMore_txtCount" name="' + this.id + '_czMore_txtCount" type="hidden" value="0" size="5" />';
obj.before(count);
var recordset = obj.children("#first");
obj.after(divPlus);
var set = recordset.children(".recordset").children().first();
var btnPlus = obj.siblings("#btnPlus");
if(!options.styleOverride) {
btnPlus.css({
'float': 'right',
'border': '0px',
'background-image': 'url("/default/includes/themes/images/add.png")',
'background-position': 'center center',
'background-repeat': 'no-repeat',
'height': '25px',
'width': '25px',
'cursor': 'pointer',
});
}
if (recordset.length) {
obj.siblings("#btnPlus").click(function () {
var i = obj.children(".recordset").length;
var item = recordset.clone().html();
i++;
item = item.replace(/\[([0-9]\d{0})\]/g, "[" + i + "]");
item = item.replace(/\_([0-9]\d{0})\_/g, "_" + i + "_");
//$(element).html(item);
//item = $(item).children().first();
//item = $(item).parent();
obj.append(item);
loadMinus(obj.children().last());
minusClick(obj.children().last());
if (options.onAdd != null) {
obj.trigger("onAdd", i);
}
obj.siblings("input[name$='czMore_txtCount']").val(i);
return false;
});
recordset.remove();
for (var j = 0; j <= i; j++) {
loadMinus(obj.children()[j]);
minusClick(obj.children()[j]);
if (options.onAdd != null) {
obj.trigger("onAdd", j);
}
}
if (options.onLoad != null) {
obj.trigger("onLoad", i);
}
//obj.bind("onAdd", function (event, data) {
//If you had passed anything in your trigger function, you can grab it using the second parameter in the callback function.
//});
}
function resetNumbering() {
$(obj).children(".recordset").each(function (index, element) {
$(element).find('input:text, input:password, input:file, select, textarea').each(function(){
old_name = this.name;
new_name = old_name.replace(/\_([0-9]\d{0})\_/g, "_" + (index + 1) + "_");
this.id = this.name = new_name;
//alert(this.name);
});
index++
minusClick(element);
});
}
function loadMinus(recordset) {
var divMinus = '<div id="btnMinus" class="btnMinus" />';
$(recordset).children().first().before(divMinus);
var btnMinus = $(recordset).children("#btnMinus");
if(!options.styleOverride) {
btnMinus.css({
'float': 'right',
'border': '0px',
'background-image': 'url("/default/includes/themes/images/remove.png")',
'background-position': 'center center',
'background-repeat': 'no-repeat',
'height': '25px',
'width': '25px',
'cursor': 'poitnter',
});
}
}
function minusClick(recordset) {
$(recordset).children("#btnMinus").click(function () {
var i = obj.children(".recordset").length;
var id = $(recordset).attr("data-id")
$(recordset).remove();
resetNumbering();
obj.siblings("input[name$='czMore_txtCount']").val(obj.children(".recordset").length);
i--;
if (options.onDelete != null) {
if (id != null)
obj.trigger("onDelete", id);
}
});
}
});
};
})(jQuery);
上面是我们在sourceforge网站上找到的jquery代码,并尝试了此代码,我们在其他实例中一直在使用此功能,因此尝试修改其行为,看起来它确实支持动态命名,但是以某种方式不起作用< / p>
答案 0 :(得分:0)
在您的HTML代码中,表单字段的名称必须采用someText_1_someAnotherText格式,然后插件将在2个下划线之间递增数字。
示例:
<input type="text" name="name_1_repeat" class="form-control" id="name_1_repeat">
添加按钮生成的代码为
<input type="text" name="name_1_repeat" class="form-control" id="name_1_repeat">
<input type="text" name="name_2_repeat" class="form-control" id="name_2_repeat">
以此类推。