代码之家  ›  专栏  ›  技术社区  ›  Ivan

dirtyforms与jquery validate的submithandler()方法一起使用时无法正常工作

  •  0
  • Ivan  · 技术社区  · 7 年前

    我两个都用 DirtyForms 还有教皇 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 回复  |  直到 7 年前
        1
  •  1
  •   Sparky    7 年前

    自从 submitHandler 只有当表单有效时才会激发,您永远不需要dirtyforms在这里执行任何操作。

    所以就在里面杀了它 提交者 使用 .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/