DirtyForms 与 jQuery Validate 的 submitHandler() 方法一起使用时无法正常工作

Posted

技术标签:

【中文标题】DirtyForms 与 jQuery Validate 的 submitHandler() 方法一起使用时无法正常工作【英文标题】:DirtyForms does not work properly when used with submitHandler() method of jQuery Validate 【发布时间】:2018-11-10 15:02:29 【问题描述】:

我同时使用 DirtyForms 和 popupar jQuery Validate 来验证我的表单。我还需要使用submitHandler() 方法,因为在实际发送表单之前我会执行一些操作。 在这种情况下,即使在正常的提交表单上也会触发 DirtyForms,而这是不应该的。

$('.validate').validate(
	// submitHandler causer DirtyForms to be triggered evn on normal form submit
  submitHandler: function (form) 
    // do a couple of things here, then...
    form.submit();
  
);

$('form[method="post"]').dirtyForms();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.17.0/jquery.validate.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.dirtyforms/2.0.0/jquery.dirtyforms.min.js"></script>

<p>Fill the field and send the form, you'll see that DirtyForms is triggered even if it should not</p>
<form action="#" method="post" class="validate">
  <input type="text" name="username" required>
  <button type="submit">send</button>
</form>

请帮忙?

【问题讨论】:

【参考方案1】:

由于submitHandler 仅在表单有效时触发,因此您永远不需要 DirtyForms 在这里执行任何操作。

所以只需在submitHandler 内使用.dirtyForms('setClean') 杀死它

$('.validate').validate(
    submitHandler: function(form) 
        // do a couple of things here, then...
        $('form:dirty').dirtyForms('setClean');  // <- kill DirtyForms
        form.submit();
    
);

$('form[method="post"]').dirtyForms();

演示:jsfiddle.net/aunpmfsa/1/

【讨论】:

以上是关于DirtyForms 与 jQuery Validate 的 submitHandler() 方法一起使用时无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章

带有dirtyforms jQuery插件的DropDownList

如何找到触发了dirtyforms 弹出窗口的原因?

DirtyForms 不适用于输入隐藏字段

强制检查dirtyforms.js

DirtyForms 不能与 $.blockUI 一起正常工作

无法让自定义对话框与 DirtyForms 一起使用