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>