1. ホーム
  2. ジャバスクリプト

[解決済み】フォームが送信されないようにするには?

2022-03-29 09:01:40

質問

どこかに送信ボタンがあるフォームがあります。

しかし、どうにかしてsubmitイベントを「キャッチ」して、それが発生しないようにしたいのです。

何かいい方法はないでしょうか?

カスタムコントロールの一部なので、サブミットボタンを修正することができません。

どうすればいいですか?

他の回答とは異なり false は、あくまでも 部分 の答えになります。return文の前にJSエラーが発生した場合のシナリオを考えてみましょう...

html

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

スクリプト

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