如何在提交之前做点什么?

Jim*_*mmy 128 html javascript jquery

我有一个表单,其中有一个提交表单的按钮.提交之前我需要做点什么.我试图做的onClick该按钮,但提交后它发生.

我不能共享代码,但一般来说,我应该怎么做jQuery或JS来处理这个?

Dan*_*een 194

如果您有这样的表格:

<form id="myform">
...
</form>
Run Code Online (Sandbox Code Playgroud)

在提交表单之前,您可以使用以下jQuery代码执行某些操作:

$('#myform').submit(function() {
    // DO STUFF...
    return true; // return false to cancel form action
});
Run Code Online (Sandbox Code Playgroud)

  • @eykanal我使用了"empty"函数调用,因为这是jQuery的`$(document).ready()`函数的简写,它确保DOM在附加`submit`事件之前完成.如果你的JS位于页面的底部,那就没有必要,但是如果它在`<head>`部分,那么你需要它.请参阅:http://stackoverflow.com/q/13062246/135108 (3认同)
  • 我有麻烦使用这个循环必须在提交之前完成.有什么建议? (2认同)
  • 为什么这包含在空函数调用中?在没有周围的空函数的情况下,`submit`函数是否应该能够直接绑定到`$('#form')`?编辑:[该文档表明,不需要周边的函数调用(https://api.jquery.com/submit/#submit-eventData-handler). (2认同)

acm*_*cme 21

假设你有一个这样的表格:

<form id="myForm" action="foo.php" method="post">
   <input type="text" value="" />
   <input type="submit" value="submit form" />

</form>
Run Code Online (Sandbox Code Playgroud)

你可以onsubmit像这样用jQuery 附加一个-event:

$('#myForm').submit(function() {
  alert('Handler for .submit() called.');
  return false;
});
Run Code Online (Sandbox Code Playgroud)

如果您return false在该功能之后不会提交表单,如果您返回true或什么都没有,它会像往常一样提交.

有关详细信息,请参阅jQuery文档.


Jam*_*son 8

onclick在提交表单之前,您可以使用运行一些JavaScript或jQuery代码:

<script type="text/javascript">
    beforeSubmit = function(){
        if (1 == 1){
            //your before submit logic
        }        
        $("#formid").submit();            
    }
</script>
<input type="button" value="Click" onclick="beforeSubmit();" />
Run Code Online (Sandbox Code Playgroud)

  • 但是这不起作用,当表单包含例如输入字段时,用户正在点击正在触发提交事件的返回键.通常最好直接附加到提交事件,这样您就可以确保无论用户如何解除提交,都会调用它. (16认同)
  • @Ansyori 那更糟糕! (6认同)
  • <input type ="submit"value ="Click"onmouseover ="beforeSubmit();" /> (2认同)

Yur*_*iuk 6

形式:

<form id="formId" action="/" method="POST" onsubmit="prepareForm()">
   <input type="text" value="" />
   <input type="submit" value="Submit" />
</form>
Run Code Online (Sandbox Code Playgroud)

JavaScript 文件:

function prepareForm(event) {
  event.preventDefault();
  // Do something you need
  document.getElementById("formId").requestSubmit();
}
Run Code Online (Sandbox Code Playgroud)

注意:如果你支持 Safari(你可能是这样),你需要引入一个polyfillrequestSubmit()


rog*_*ith 5

确保提交按钮不是“提交”类型,将其设为按钮。然后使用onclick事件来触发一些javascript。在实际发布数据之前,您可以在那里做任何您想做的事情。

  • 可以通过多种方式提交表单,例如在某些字段中按 Enter 键。绑定到对可能不会被单击的一个按钮的单击并不是一个好主意。其他答案显示了如何绑定*表单*的“onsubmit”,无论表单如何提交,它都会触发。 (8认同)
  • 令人惊讶的是,在 2021 年,`type="submit"` 的 `onClick` 是通过执行任何最终导致 form.submit() 操作的操作来触发的。适用于在 Firefox、Chrome 和 Brave 上按输入字段上的 Enter 键。谁知道十年前是不是这样。 (3认同)