JavaScriptを使って、resetイベントを設定する方法などについて書いています。
resetイベントを使うと、フォームを初期化されたときに処理をすることができます。
実際に動くサンプルを使いつつ、以下について書いています。
・resetイベントをつける方法
・resetメソッドでフォームを初期化する
・inputタグのresetでフォームを初期化する
resetイベントを設定する方法と一緒にフォームを初期化する方法についても記載しています。
resetイベントとは?
reset
イベントは、フォームがリセットされたときに発生するイベントです。
フォームのリセットボタンがクリックされるか、JavaScriptからフォームのreset
メソッドが呼び出されるとトリガーされます。
このイベントを使用して、フォームがリセットされる前にカスタム処理を行ったり、リセット時に特定の操作を実行したりすることができます。
resetイベントをつける方法
reset
イベントをHTML要素にonreset
属性を使ってつける方法と、addEventListener
メソッドを使ってつける方法があります。
DOMにonresetを使ってイベントをつける
HTMLのonreset
属性を使用して、直接イベントを設定する方法です。
<!DOCTYPE html>
<html lang="ja">
<head>
<title>onreset Example</title>
</head>
<body>
<form id="myForm" onreset="handleReset()">
<input type="text" name="name" placeholder="名前">
<input type="email" name="email" placeholder="メール">
<fieldset>
<div>
<input type="radio" name="test-radio" value="test1" />
<label for="test1">test1</label>
</div>
<div>
<input type="radio" name="test-radio" value="test2" />
<label for="test2">test2</label>
</div>
</fieldset>
<select name="test-select">
<option value=""></option>
<option value="test1">test1</option>
<option value="test2">test2</option>
<option value="test3">test3</option>
</select>
<br />
<button type="reset">リセット</button>
</form>
<script>
function handleReset() {
alert('フォームがリセットされました');
}
</script>
</body>
</html>
HTMLの解説
form
タグの配下にテキストボックス、ラジオボタンやセレクトボックスを含めた適当なフォームを作成しました。
button
タグでリセットボタンを用意しています。
type
属性でreset
を設定しているので、これでフォームがリセットされます。
ボタンが押されてリセットされた時にform
タグのonreset
属性に設定しているメソッドが処理されます。
JavaScriptの解説
handleReset
関数は、reset
イベントが発生したときに呼び出されます。
今回はリセットボタンを押した時です。
この関数は、アラートダイアログに「フォームがリセットされました」というメッセージを表示します。
動作確認
フォームのリセットボタンをクリックすると、下記のようにアラートダイアログが表示され、フォームの入力フィールドが初期状態に戻りました。
このようにonreset
属性に設定した処理がリセット時に動きます。
動作としてはリセット前に処理された後に、フォームがリセットされました。
addEventListenerを使ってイベントをつける
HTMLでは特に設定を行わず、JavaScriptでイベントリスナーを追加します。
<!DOCTYPE html>
<html lang="ja">
<head>
<title>addEventListener Example</title>
</head>
<body>
<form id="myForm">
<input type="text" name="name" placeholder="名前">
<input type="email" name="email" placeholder="メール">
<fieldset>
<div>
<input type="radio" name="test-radio" value="test1" />
<label for="test1">test1</label>
</div>
<div>
<input type="radio" name="test-radio" value="test2" />
<label for="test2">test2</label>
</div>
</fieldset>
<select name="test-select">
<option value=""></option>
<option value="test1">test1</option>
<option value="test2">test2</option>
<option value="test3">test3</option>
</select>
<br />
<button type="reset">リセット</button>
</form>
<script>
document.getElementById('myForm').addEventListener('reset', function() {
alert('フォームがリセットされました');
});
</script>
</body>
</html>
HTMLの解説
先ほどと同様にフォームを用意しています。
今回はフォームタグにonreset
属性をつけずに、スクリプトの方で処理しています。
JavaScriptの解説
document.getElementById('myForm')
で対象のフォーム要素を取得し、addEventListener
メソッドを使ってreset
イベントリスナーを追加します。
第1引数で渡したreset
がイベントになり、第2引数に匿名関数で処理を書いています。
先ほどと同じようにイベントが発生すると、アラートダイアログに「フォームがリセットされました」というメッセージが表示されます。
resetメソッドでフォームを初期化する
resetメソッドを使用すると、JavaScriptからフォームを初期化することができます。
これにより、ユーザーがリセットボタンをクリックしなくても、任意のタイミングでフォームのフィールドを初期状態に戻すことが可能です。
<!DOCTYPE html>
<html lang="ja">
<head>
<title>Form Reset Method Example</title>
</head>
<body>
<form id="myForm">
<input type="text" name="name" placeholder="名前">
<input type="email" name="email" placeholder="メール">
<button type="button" id="resetButton">リセット</button>
</form>
<script>
document.getElementById('resetButton').addEventListener('click', function() {
document.getElementById('myForm').reset();
alert('フォームがリセットされました');
});
</script>
</body>
</html>
HTMLの解説
簡単なフォームを用意しています。
リセットボタンはtype
属性がbutton
になっているので、特にイベントが発生しないボタンです。
JavaScriptの解説
スクリプトの方では、id
属性がresetButton
のボタンに対して、クリックイベントを追加しています。
このイベントはクリックしたときに発生します。
ボタンをクリックすると、document.getElementById('myForm')
でフォームを取得して、取得したフォームからreset
メソッドを呼び出しました。
これで、button
タグのtype
属性がreset
でない場合でもフォームの値がリセットされます。
動作を確認する
動作を確認すると、下記のようにリセットされることが確認できました。
inputタグのresetでフォームを初期化する
input
タグのreset
タイプを使用することでも、フォーム全体をリセットすることができます。
<!DOCTYPE html>
<html lang="ja">
<head>
<title>Input Reset Example</title>
</head>
<body>
<form id="myForm">
<input type="text" name="name" placeholder="名前">
<input type="email" name="email" placeholder="メール">
<input type="reset" value="リセット">
</form>
</body>
</html>
このコードでは、input
タグのreset
タイプを使用して、フォームのリセットボタンを作成しています。
リセットボタンをクリックすると、フォームのすべての入力フィールドが初期状態に戻ります。
特に行いたい処理がなくフォームを初期化したいだけなら、このようにinput
タグかbutton
タグのtype
属性にreset
をつけたボタンを用意すると良いかと思います。
動作確認
このようにリセットボタンをクリックすると、フォームが初期化されました。
JavaScriptでresetイベントを設定する方法まとめ
JavaScriptを使って、reset
イベントを設定する方法とフォーム初期化について解説しました。
以下のポイントをまとめます。
・HTMLの`onreset`属性やJavaScriptの`addEventListener`メソッドを使って、`reset`イベントを設定できた。
・フォームから`reset`メソッドを呼び出すことで、フォームを初期化することができた。
・フォーム内の`input`タグや`button`タグの`type`属性に`reset`を設定することで、フォームを初期化することができた。
コメント