JavaScript:onsubmitとonresetの解説

JavaScript:onsubmitとonresetの解説

onsubmitとonresetの解説

onsubmitイベントハンドラとは

`onsubmit`は、フォームが送信される直前に実行されるイベントハンドラです。フォームの検証や送信前の処理を行う際に便利です。 フォームが送信される際にこのイベントがトリガーされ、スクリプトを実行できます。送信を防止したり、データを処理したりすることも可能です。

特長

  • フォーム送信前に実行される。
  • JavaScriptで送信を無効化したり、動的にデータを変更できる。
  • イベントオブジェクトが渡されるため、送信を防ぐ`event.preventDefault()`を使用可能。

onsubmitの例

基本的な使用例

以下の例では、フォーム送信時に入力が空の場合は送信を防ぎ、エラーメッセージを表示します。

<form onsubmit="return validateForm()">
    <label for="username">ユーザー名:</label>
    <input type="text" id="username" name="username">
    <button type="submit">送信</button>
</form>

<script>
function validateForm() {
    const username = document.getElementById('username').value;
    if (!username) {
        alert('ユーザー名を入力してください。');
        return false; // 送信を中止
    }
    return true; // フォーム送信を許可
}
</script>

event.preventDefault()を使用した例

以下は、送信イベントを無効化しつつ、カスタム処理を行う例です。

<form id="myForm">
    <label for="email">メールアドレス:</label>
    <input type="email" id="email" name="email">
    <button type="submit">送信</button>
</form>

<script>
document.getElementById('myForm').onsubmit = function(event) {
    event.preventDefault(); // 送信を中止
    alert('送信をブロックしました。');
};
</script>

onresetイベントハンドラとは

`onreset`は、フォームのリセットボタンが押されたときにトリガーされるイベントハンドラです。 フォームフィールドの初期化や、リセット時の追加処理を実行するために使用されます。

特長

  • フォームのリセット時に実行される。
  • デフォルトのリセット動作を無効化することも可能。
  • イベントオブジェクトが渡され、`event.preventDefault()`でリセットを防止可能。

onresetの例

基本的な使用例

以下の例では、リセット時に確認ダイアログを表示し、ユーザーが「OK」を選択した場合のみリセットを実行します。

<form onreset="return confirmReset()">
    <label for="name">名前:</label>
    <input type="text" id="name" name="name">
    <button type="reset">リセット</button>
</form>

<script>
function confirmReset() {
    return confirm('フォームをリセットしますか?');
}
</script>

event.preventDefault()を使用した例

以下は、リセットをカスタム処理に置き換える例です。

<form id="resetForm">
    <label for="age">年齢:</label>
    <input type="number" id="age" name="age">
    <button type="reset">リセット</button>
</form>

<script>
document.getElementById('resetForm').onreset = function(event) {
    event.preventDefault(); // デフォルトリセット動作を中止
    alert('カスタムリセット処理を実行しました。');
    document.getElementById('age').value = ''; // 手動でフィールドをクリア
};
</script>

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です