suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Wie vermeide ich das Absenden von Formularen?

<p>Ich habe irgendwo ein Formular mit einer Schaltfläche zum Senden. </p> <p>Allerdings möchte ich das Commit-Ereignis irgendwie „abfangen“ und verhindern, dass es eintritt. </p> <p>Gibt es eine Möglichkeit, dies zu tun? </p> <p>Ich kann die Schaltfläche „Senden“ nicht ändern, da sie Teil eines benutzerdefinierten Steuerelements ist. </p>
P粉545218185P粉545218185495 Tage vor537

Antworte allen(2)Ich werde antworten

  • 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解释得更好。

    Antwort
    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;
    }

    Antwort
    0
  • StornierenAntwort