思路:首先要复制上一个模块的元素,然后利用字符串截取,修改其name值,然后动态的添加表单验证的规则rules,然后用一个容器来记录一共添加了多少个模块。
动态添加验证部分代码:
var deptHtml = $("#depinfo1").prop("outerHTML");
$(document).on('click', "#addDept", function() {
$(this).prev().find("input").each(function() {
$(this).val("");
var sourceName = this.name;
var newName = this.name.substring(0, sourceName.length - index.length) + newIndex;
this.name = newName;
if (window.formValidateRules.rules[sourceName]) {
var rule = window.formValidateRules.rules[sourceName];
if (rule["compareDate"]) {
rule["compareDate"] = rule["compareDate"].substring(0, rule["compareDate"].length - index.length) + newIndex;
}
rule["messages"] = window.formValidateRules.messages[sourceName];
$(this).rules("add", rule);
}
});
})
时间的比较,兼容Safari浏览器
jQuery.validator.methods.compareDate = function(value, element, param) {
var startDate = $("form input[name='" + param + "']").val();
var endDate = value;
var date1 = Date.parse(startDate.replace(/\s/g,'T').replace(/\//g,'-'));
var date2 = Date.parse(endDate.replace(/\s/g,'T').replace(/\//g,'-'));
return date1 < date2;
};
注意:rules和messagede 的格式,必须有{}括起来。