フォームの入力値を受け取る — value と入力チェック
入力された文字をJavaScriptで受け取り、簡単なチェックをして表示する。ここまでできると、作れるものが一気に増えます。
ここまでで「要素を探す」「イベントで動かす」ができるようになりました。今回はその応用で、入力された内容を扱います。
入力値は value で取れる
const input = document.getElementById("name");
const value = input.value;textContent ではなく value です。入力欄の中身は、タグの中の文字ではなく「入力された値」として別に持たれているためです。ここを textContent と書いてしまうと、常に空になります。
受け取った値は必ず文字列
type="number" の入力欄であっても、value で受け取った時点では文字列です。計算に使うときは Number() で数値に変換してください。忘れると、足し算のつもりが文字の連結になります。
プレビューの入力欄に文字を入れて、ボタンを押してみてください。空のまま押すと注意が出ます。
trim() を必ず付ける
スペースだけを入力されたとき、trim() が無いと「入力あり」と判定されてしまいます。前後の空白を取り除くこの1つの命令で防げるので、入力チェックの定番として覚えてください。
入力するたびに反応させる
ボタンを押さずに、入力しながら結果を出したいときは input イベントを使います。文字数カウンターなどはこの形です。
入力欄に文字を打つと、数がすぐ変わります。上限の 20 を変えると、色が変わる位置も変わります。
チェックボックスとラジオボタン
これらは value ではなく checked で状態を調べます。true なら選ばれている、false なら選ばれていない、という真偽値です。
const agree = document.getElementById("agree");
if (!agree.checked) {
alert("同意が必要です");
}送信を止める
フォームの送信ボタンを押すと、ページが再読み込みされます。JavaScriptだけで処理したいときは、submit イベントで preventDefault() を呼んで、その動きを止めます。
form.addEventListener("submit", function (e) {
e.preventDefault(); // ページの再読み込みを止める
// ここで自由に処理する
});ブラウザの機能も使う
入力必須にしたいだけなら、JavaScriptを書かなくても input に required 属性を付けるだけで、ブラウザが警告を出してくれます。まず標準機能で足りるかを考えると、書くコードが減ります。