我验证带有表单验证的表单io,如果在通过ajax提交之前克隆整个表单会发生什么,如果我在后面出现错误,则加载错误消息带有按钮,如果单击则再次加载表单,但是没有工作一次的验证器被加载。
以下是我的代码的一部分,如果有人可以帮助我:
$.on("success.form.fv", function(e){
e.preventDefault();
var $form= $(e.target);
var modal= $form.children(".modal-body");
var datos= $form.serialize();
var modalClonado= modal.children(".row").clone();
$.ajax({
success: function(data) {
if ("user" in data) {
modal.html(error+data.user+cerrarError);
}
}
});
$form.on("click", "button", function(){
modal.html(modalClonado);
$form.find("#submit")
.removeClass("disabled")
.prop("disabled", false);
});
});
答案 0 :(得分:0)
如果要从DOM中删除原始表单,然后将其替换为新表单,则不会附加验证程序。您必须在表单中添加另一个验证对象,以便在您尝试提交新表单时验证表单。
如果未通过验证,为什么需要完全替换原始表单?是否更容易让用户编辑原件上的任何无效字段并允许他们重新提交表单?
编辑:
从验证中获得结果后,您可以使用e.preventDefault()
在验证未通过时停止提交表单,并在必要时附加错误消息。这将使您的表单保持原样(不从页面导航或需要刷新页面),用户可以返回表单编辑任何无效的字段,然后尝试重新提交表单,其中相同的验证过程将再次发生。如果表单成功验证,您可以使用表单上的.submit()
提交表单。 $('#formToSubmit').submit()
。这样,您只需将验证器对象添加到原始表单一次,然后用户可以继续尝试提交表单,直到成功为止。