![](/img/trans.png)
[英]Jquery Validation Plugin (.validate) is not working in Dynamic Form(loop form)
[英]jquery validate plugin on dynamic form inputs not working
我有一個表格,其中有一些字段,然后如果需要,用戶可以添加更多相同類型的字段。 我正在使用http://jqueryvalidation.org/ validate插件來驗證字段。
當我在某處閱讀jquery validate插件時,需要使用唯一的名稱來驗證字段。 所以我要對每個字段進行唯一命名。 首先,我希望如果我使用類添加規則,則validate插件將負責動態添加元素的驗證。 但事實並非如此。
因此,即使每個字段的名稱都是唯一的,validate插件也僅驗證最初呈現的第一個輸入。
我什至嘗試使用$ .clone()希望它能處理所有事件綁定。 但這對我沒有用。 所以我移至下划線以重復標記,因為字段數量眾多,並且我不想用JS編寫模板並相應地命名。
我找不到解決方案,只能停留在這里。 在此問題解決之前無法繼續。
這是我寫的JS。
$("#work_form").validate();
$(".work_emp_name").rules("add", {
required: true
});
_.templateSettings.variable = "element";
var tpl = _.template($("#form_tpl").html());
var counter = 1;
$("form").on("click", ".add_employer", function (e) {
e.preventDefault();
var tplData = {
i: counter
};
$("#word_exp_area").append(tpl(tplData));
counter += 1;
});
請在小提琴設置中找到標記。
使用此插件中的一種方法.rules()
如.rules()
並針對多個元素(如class
.rules()
定位時,還必須使用jQuery .each()
方法。
$('.work_emp_name').each(function () {
$(this).rules("add", {
required: true
});
});
而且,您不能在DOM中尚不存在的元素上使用.rules()
。 只需將.rules()
方法移至創建新輸入的函數中。
$("form").on("click", ".add_employer", function (e) {
e.preventDefault();
var tplData = {
i: counter
};
$("#word_exp_area").append(tpl(tplData));
counter += 1;
$('.work_emp_name').each(function () {
$(this).rules("add", {
required: true
});
});
});
工作演示: http : //jsfiddle.net/Yy2gB/10/
但是,您可以通過僅定位一個新字段而不是使用work_emp_name
class
的所有字段來提高work_emp_name
。
$("form").on("click", ".add_employer", function (e) {
e.preventDefault();
var tplData = {
i: counter
};
$("#word_exp_area").append(tpl(tplData)); // <- add new field
$('input[name="work_emp_name['+counter+']"]').rules("add", { // <- apply rule to new field
required: true
});
counter += 1;
});
工作演示: http : //jsfiddle.net/Yy2gB/11/
我上面的兩個示例都是將規則添加到動態創建的字段中。 您仍然需要在dom准備就緒時為靜態字段聲明任何規則,如下所示...
$("#work_form").validate({
rules: {
"work_emp_name[0]": {
required: true
}
}
});
返回第一個選定元素的驗證規則,或者添加指定的規則並返回第一個匹配元素的所有規則。 要求驗證父表單,即首先調用$(“ form”).validate()或
刪除指定的規則並返回第一個匹配元素的所有規則。 更多信息
function addRule(id){
$("[name='work_emp_name["+id+"]']").rules("add", {
required: true
});
}
$("#work_form").validate();
addRule(0);
_.templateSettings.variable = "element";
var tpl = _.template($("#form_tpl").html());
var counter = 1;
$("form").on("click", ".add_employer", function (e) {
e.preventDefault();
var tplData = {
i: counter
};
$("#word_exp_area").append(tpl(tplData));
addRule(counter);
counter += 1;
}); here
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.