Event.preventDefault()は何をするのか

Event.preventDefault()はclickやsubmitなどのイベントが持つデフォルトの動作をキャンセルする。

どういうことかというと、
例えばsubmitのデフォルトの動作というのは「フォーム内のサブミットボタンのクリック – サーバへの送信を開始します。」
つまり、type="submit"のボタンをクリックすると、formで指定したurlへ送信するという動作。

formで送信先のurlを指定しない場合、現在のurlに送信するという仕様らしいので、
今回の課題15でいうと、ボタンを押した時点でindex.html(同じ画面)に遷移してしまう。
そうすると、fetchしたデータをhtmlにappendChildしても、再描画されるためにそれは消えてしまう。

ではどうすれば良いのかというと、Event.preventDefault()の出番。

Event.preventDefault()によって、指定urlへの送信という動作をキャンセルしてあげれば、同じ画面への遷移は行われずに済む。

form.addEventListener("submit", (e) => {
  const inputNum = document.getElementById("js-input-number");
  const inputName = document.getElementById("js-input-name");
  e.preventDefault();
  init(inputNum.value,inputName.value); 
});

addEventListenerのコールバック関数にイベントを渡し、コールバック関数内でe.preventDefault();を実行。
これで意図した動きになった。

https://codesandbox.io/embed/lesson15-m99cf?fontsize=14&hidenavigation=1&theme=dark

参考ドキュメント:
https://developer.mozilla.org/ja/docs/Web/API/Event/preventDefault
https://ja.javascript.info/default-browser-action

私がJavaScriptを教えていただいている『もりけん塾』の森田先生の情報はこちら。
BLOG:無骨日記
Twitter:@terrace_tech

Follow me!

コメントを残す

メールアドレスが公開されることはありません。