gpt4 book ai didi

javascript - jquery 验证忽略动态添加的字段

转载 作者:行者123 更新时间:2023-11-30 16:28:33 26 4
gpt4 key购买 nike

Jquery 验证验证 DOM 中已有的表单字段以及动态添加的字段。但是,如果不是动态添加的字段通过验证,则提交表单时将忽略动态添加的字段。

截图如下: snapshot

这是我的代码:

 $('#milestone-form').validate({ // initialize the plugin
rules: {
"milestone[]": {
required: true,
minlength: 3,
},
"deadline[]": {
required: true,
minlength: 3,
},
"amount[]": {
required: true,
minlength: 2,
},

},
submitHandler: function(form) {
var data = $("#milestone-form").serialize();
$.ajax({
type:"POST",
url:"ajax/scripts/crt_ms.php",
data:data,
success:function(data){
if(!data){alert("Something went wrong")}else{alert("Success")}
$(document).off();
},
});
},
});
//Validation End

$(document).on('click', ".add", function(){
$(flieds).insertAfter($(this).closest("#fields"));
$('.field').each(function() {
$(this).rules('add', {
required: true,
});
});
});

$(".save-ms").click(function(){
if($('#milestone-form').valid()){
//$("#milestone-form").submit();
alert("POSTED");
return false;
} else { alert("ERROR");}
});

我所有的<input>元素有一个 class=".field"属性。

另外,我注意到一件事,所有动态字段都没有得到错误标签,而是只有一个类将其定义为无效。

我一整天都在尝试这样做,但就是没有发生。

最佳答案

很简单。 Jquery 验证不会验证具有相同名称的多个元素。

所以我找到的解决方案是here , 最初来自 here

我只需要添加这个。

$(document).ready(function(){
$.validator.prototype.checkForm = function () {
//overriden in a specific page
this.prepareForm();
for (var i = 0, elements = (this.currentElements = this.elements()); elements[i]; i++) {
if (this.findByName(elements[i].name).length != undefined && this.findByName(elements[i].name).length > 1) {
for (var cnt = 0; cnt < this.findByName(elements[i].name).length; cnt++) {
this.check(this.findByName(elements[i].name)[cnt]);
}
} else {
this.check(elements[i]);
}
}
return this.valid();
},
};

关于javascript - jquery 验证忽略动态添加的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33722927/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com