jQuery - prevent default, then continue default

后端 未结 10 1568
[愿得一人]
[愿得一人] 2020-12-02 16:27

I have a form that, when submitted, I need to do some additional processing before it should submit the form. I can prevent default form submission behavior, then do my addi

10条回答
  •  天涯浪人
    2020-12-02 16:42

    In a pure Javascript way, you can submit the form after preventing default.

    This is because HTMLFormElement.submit() never calls the onSubmit(). So we're relying on that specification oddity to submit the form as if it doesn't have a custom onsubmit handler here.

    var submitHandler = (event) => {
      event.preventDefault()
      console.log('You should only see this once')
      document.getElementById('formId').submit()
    }
    

    See this fiddle for a synchronous request.


    Waiting for an async request to finish up is just as easy:

    var submitHandler = (event) => {
      event.preventDefault()
      console.log('before')
      setTimeout(function() {
        console.log('done')
        document.getElementById('formId').submit()
      }, 1400);
      console.log('after')
    }
    

    You can check out my fiddle for an example of an asynchronous request.


    And if you are down with promises:

    var submitHandler = (event) => {
      event.preventDefault()
      console.log('Before')
        new Promise((res, rej) => {
          setTimeout(function() {
            console.log('done')
            res()
          }, 1400);
        }).then(() => {
          document.getElementById('bob').submit()
        })
      console.log('After')
    }
    

    And here's that request.

提交回复
热议问题