首页  >  问答  >  正文

如何避免表单提交?

<p>我有一个表单,在其中的某个地方有一个提交按钮。</p> <p>然而,我想以某种方式“捕捉”提交事件并阻止其发生。</p> <p>有没有办法可以做到这一点?</p> <p>我不能修改提交按钮,因为它是一个自定义控件的一部分。</p>
P粉545218185P粉545218185447 天前502

全部回复(2)我来回复

  • P粉463418483

    P粉4634184832023-08-22 12:35:21

    您可以像这样使用内联事件onsubmit

    <form onsubmit="alert('停止提交'); return false;">

    或者

    <script>
       function toSubmit(){
          alert('我不会提交');
          return false;
       }
    </script>
    
    <form onsubmit="return toSubmit();">

    示例

    现在,在开发大型项目时,这可能不是一个好主意。您可能需要使用事件监听器。

    在这里阅读有关内联事件 vs 事件监听器(addEventListener和IE的attachEvent)的更多信息。因为我无法比Chris Baker解释得更好。

    回复
    0
  • P粉399585024

    P粉3995850242023-08-22 11:25:35

    与其他答案不同,返回false只是答案的部分。考虑在返回语句之前发生JS错误的情况...

    html

    <form onsubmit="return mySubmitFunction(event)">
      ...
    </form>

    script

    function mySubmitFunction()
    {
      someBug()
      return false;
    }

    在这里返回false不会被执行,表单将以任何方式提交。您还应该调用preventDefault来阻止Ajax表单提交的默认操作。

    function mySubmitFunction(e) {
      e.preventDefault();
      someBug();
      return false;
    }

    在这种情况下,即使有错误,表单也不会被提交!

    或者,可以使用try...catch块。

    function mySubmit(e) { 
      e.preventDefault(); 
      try {
       someBug();
      } catch (e) {
       throw new Error(e.message);
      }
      return false;
    }

    回复
    0
  • 取消回复