※本ページはプロモーションが含まれています。
本記事は、「数値の入力フォームを上手いこと制御したいと…」と思いつつ
・フォームのマイナス値の取り扱いや小数値の制御をしたい人
・スマートフォンで使いやすい数値の入力フォームを実装したい人
・数値の最小から最大値をコントロールしたい人
上記のような、悩みや疑問を持っている、プログラミングを勉強したい人向けに現役エンジニアが解説します。
この記事では、「前半」では「数値の入力フォームを実装する「input Type=Numberの基本的な使い方」を「後半」では「小数値・マイナス値」や「スマートフォンで使いやすいデザインテクニック」の方法を詳しく解説します。
プログラミング未経験の方でも、読みやすい内容なので、本記事を読んで未来に向けて、一歩を踏み出しましょう。
それでは、ご一読ください!
HTMLのinput要素を使って、数値を入力するフォームの作り方を教えます。例えば、ウェブサイトで数量や年齢を入力する欄を考えてみてください。HTML Input Type=Numberを使うと、そのような入力欄を簡単に作ることができます。
基本的な使い方
HTML input Type=Numberを使うためには、次のように簡単なコードを書きます。
数量:<input type="number" name="quantity">
HTML【実行結果】input Type=Numberの基本的な使い方
上のコードをウェブサイトに追加すると、「数量」と書かれた欄が表示され、ユーザーは数値を入力できるようになります。例えば、5や10などの数字を直接入力できます。
さらに、一部のブラウザでは欄の横に上下の矢印が表示され、それを使って数値を増減することもできます。
数値を制限する方法
HTML Input Type=Numberでは、入力できる数値の範囲を制限する方法もあります。例を見てみましょう。
最小値を指定
入力できる数値の最小値を指定します。例えば、0を指定すると0以上の数値のみ入力できます。
<input type="number" min="0">
HTML【実行結果】最小値を指定
最大値を指定
入力できる数値の最大値を指定します。例えば、100を指定すると100以下の数値のみ入力できます。
<input type="number" max="100">
HTML【実行結果】最大値を指定
増減の単位を指定
数値の増減の単位を指定することもできます。例えば、0.5を指定すると、0.5刻みで数値が変わります。
step属性は、入力値が増減する際の刻み幅を指定するものであり、小数や整数のどちらにも対応しています。
<label for="quantity">数量:</label>
<input type="number" id="quantity" name="quantity" step="1">
HTML【実行結果】増減の単位を指定
この場合、ユーザーは「数量」の入力欄に数値を入力したり、上下の矢印ボタンをクリックしたりすると、数値が1ずつ増減します。
例えば、以下のようにstep=”0.5″と指定すると、入力値が0.5ずつ増減します。
<label for="price">価格:</label>
<input type="number" id="price" name="price" step="0.5">
HTML【実行結果】step=”0.5″指定
このようにstep属性を設定することで、ユーザーが数値をステップごとに正確に増減させることができるようになります。step属性を使うことで、特定の数値範囲や増減の単位を要件に合わせて制御し、使いやすい数値入力フォームを提供することができます。
エラーメッセージの表示
HTML Input Type=Numberでは、ブラウザが自動的に入力された値が数値かどうかをチェックしてくれます。もし数値以外の文字が入力された場合、ユーザーにエラーメッセージが表示されます。これによって、ユーザーが間違った値を入力しても、すぐに気づくことができます。
HTMLのinput要素のtype属性にnumberを指定して数値入力のフォームを作成する際、スピンボタンを付けることで、ユーザーが数値を直感的に増減させることができます。スピンボタンは、数値入力欄の横に表示される上下矢印ボタンで、ユーザーはこれをクリックして数値を増減させることができます。
例えば、以下のようなHTMLコードを使ってスピンボタン付きの数値入力フォームを作成します。
<label for="quantity">数量:</label>
<input type="number" id="quantity" name="quantity" step="1">
HTML【実行結果】スピンボタン付きの数値入力フォーム
上記のコードでは、”数量”というラベルが表示され、数値入力フォームが作成されます。また、step属性を指定することで、入力値が1ずつ増減するように設定しています。
数値入力欄の横に上下矢印が表示されます。ユーザーはこのスピンボタンをクリックすることで、数値を手軽に増減させることができます。さらに、step属性を適切に設定することで、増減の単位を調整することも可能です。
HTML Input Type=Numberのスピンボタン挙動をブラウザ間で対応させる方法3選
HTML Input Type=Numberのスピンボタンは、一部のブラウザでは自動的に表示されますが、ブラウザ間での対応が異なる場合があります。したがって、ユーザーがどのブラウザを使用していても、スピンボタンが正しく動作するように対応する必要があります。
以下に、スピンボタンの挙動をブラウザ間で対応させる方法をいくつか紹介します。
1.step属性を指定する
スピンボタンの増減単位は、step属性を使って指定することができます。例えば、以下のようにstep属性を設定すると、数値の増減単位を0.5に指定します。
<input type="number" step="0.5">
HTML【実行結果】step属性を指定
step属性を使うことで、ブラウザ間でのスピンボタンの動作を統一することができます。
2.JavaScriptを利用する
JavaScriptを使って、スピンボタンの動作をカスタマイズすることもできます。JavaScriptを使えば、ブラウザによらず一貫したスピンボタンの動作を実現できます。
例えば、以下のようなJavaScriptコードを使って、スピンボタンの増減単位を0.5に設定します。
<input type="number" id="quantity">
<script>
const inputElement = document.getElementById("quantity");
inputElement.addEventListener("keydown", function (event) {
if (event.key === "ArrowUp") {
this.stepUp(0.5);
event.preventDefault();
} else if (event.key === "ArrowDown") {
this.stepDown(0.5);
event.preventDefault();
}
});
</script>
JavaScriptこのように、JavaScriptを使ってスピンボタンの動作をカスタマイズすることで、ブラウザ間での挙動の違いを解消できます。
3.スピンボタンの非表示化
一部のブラウザではスピンボタンが表示されず、手動で数値を入力する必要がある場合もあります。この場合、スピンボタンを非表示にして、ユーザーが直接数値を入力できるようにする方法もあります。
/* スピンボタンを非表示にする */
input[type="number"]::-webkit-inner-spin-button,
input[type="number"]::-webkit-outer-spin-button {
-webkit-appearance: none;
margin: 0;
}
input[type="number"] {
-moz-appearance: textfield;
}
CSS上記のCSSを使うことで、スピンボタンが非表示になり、ユーザーは直接数値を入力できるようになります。
HTMLのinput要素のtype属性にnumberを指定して、小数値を扱う方法を紹介します。HTML input Type=Numberを使うと、小数値の入力フォームを簡単に作成することができます。
小数値を扱うフォームのHTMLコード
<label for="price">価格:</label>
<input type="number" id="price" name="price" step="0.01">
HTML【実行結果】input Type=Numberで小数値を扱う方法
上記のコードでは、「価格」というラベルが表示され、小数値の入力欄が作成されます。
step属性を使用して、入力できる数値の増減単位を設定しています。例えば、上記のコードではstep=”0.01″と指定しているため、小数点以下2桁までの数値を入力できます。
inputmode属性を指定して追加キーボードの入力モードを実行
<label for="weight">重量(kg):</label>
<input type="number" id="weight" name="weight" step="0.1" inputmode="decimal">
HTML【実行結果】inputmode属性
inputmode=”decimal”を指定することで、小数点の入力が許可されます。
これらの方法を組み合わせることで、HTML input Type=Numberを使って小数値を扱うフォームを簡単に作成できます。ユーザーが正確な小数値を入力できるよう、適切なstep属性やinputmode属性を設定しましょう。
HTMLのinput要素のtype属性にnumberを指定して、マイナス値を扱う方法を紹介します。HTML input Type=Numberを使うと、マイナス値を含む数値の入力フォームを簡単に作成できます。
マイナス値を扱うフォームのHTMLコードの例です。
<label for="temperature">気温(℃):</label>
<input type="number" id="temperature" name="temperature" min="-10" max="40" step="0.1">
HTML【実行結果】マイナス値を扱うフォームのHTMLコード
上記のコードでは、「気温(℃)」というラベルが表示され、数値の入力欄が作成されます。min属性とmax属性を使用して、入力できる数値の範囲を制限しています。例えば、上記のコードでは-10から40までの数値が入力可能です。
さらに、step属性を指定することで、増減の単位を設定できます。上記のコードではstep=”0.1″と指定しているため、小数点以下1桁までの数値を増減できます。
ユーザーがフォームにマイナス値を入力する際に、数値の前に「-」(マイナス記号)を入力することで、マイナス値を入力できます。スピンボタンを使って数値を増減させる場合も、マイナス値を含めた操作が可能です。
text
一般的なテキスト入力欄を作成するために使用されるtype属性です。ユーザーは任意の文字列を入力できます。主に名前、住所、コメントなど、自由なテキストを受け付けるフォームで使用されます。
<label for="name">名前:</label>
<input type="text" id="name" name="name" placeholder="お名前を入力してください">
HTML<label for="email">メールアドレス:</label>
<input type="email" id="email" name="email" placeholder="example@example.com">
HTMLnumber
<label for="quantity">数量:</label>
<input type="number" id="quantity" name="quantity" min="1" max="100" step="1">
HTMLtel
<label for="phone">電話番号:</label>
<input type="tel" id="phone" name="phone" placeholder="012-3456-7890">
HTMLこれらのサンプルコードを使用することで、それぞれの入力欄を作成できます。また、適宜label要素やplaceholder属性を利用して、ユーザーに入力内容を説明したり、適切なフォーマットを示したりすることができます。
input type=”number”要素の見た目をカスタマイズするために、CSSを使用する方法をいくつか紹介します。ただし、一部のCSSプロパティはブラウザによって異なる挙動を示す場合があるので、ブラウザの互換性に注意してください。
以下のHTMLをコピペしてご利用下さい。
<label for="quantity">数量:</label>
<input type="number" id="quantity" name="quantity">
HTML幅や高さフォントサイズの調整
CSS:(幅や高さフォントサイズ)の調整
/* CSSテクニックを適用するためのスタイル */
input[type="number"] {
width: 200px; /* 幅を指定 */
height: 40px; /* 高さを指定 */
font-size: 16px; /* フォントサイズを指定 */
border: 1px solid #ccc; /* ボーダーを追加 */
background-color: #f9f9f9; /* 背景色を指定 */
border-radius: 5px; /* 丸みを設定 */
cursor: pointer; /* ポインターカーソルに変更 */
}
CSS【実行結果】幅や高さフォントサイズの調整
スピンボタンを非表示にする
CSS:スピンボタンを非表示
/* スピンボタンを非表示にする */
input[type="number"]::-webkit-inner-spin-button,
input[type="number"]::-webkit-outer-spin-button {
-webkit-appearance: none;
margin: 0;
}
input[type="number"] {
-moz-appearance: textfield;
}
CSS【実行結果】CSSでスピンボタンを非表示
フォーカス時のスタイル変更
CSS:フォーカス時のスタイル変更
/* フォーカス時のスタイル */
input[type="number"]:focus {
outline: none; /* フォーカス時の枠線を非表示 */
box-shadow: 0 0 2px #00a0e9; /* フォーカス時の影を追加 */
}
CSS【実行結果】CSS:フォーカス時のスタイル変更
上記のHTMLコードは、input type=”number”要素を使って数量の入力欄を作成し、対応するCSSテクニックを適用しています。
この例では、幅や高さ、フォントサイズ、ボーダー、背景色などのスタイルをカスタマイズして、数値入力フォームをデザインしています。また、スピンボタンを非表示にし、フォーカス時に影を付けるスタイルも設定しています。
今回は、input Type=Numberの基本的な使い方と属性についてご紹介しました。
それでは、最後にもう一度、おさらいしましょう。
- input Type=Numberの基本的な使い方と属性
- スピンボタン付きのHTML Input Type=Number要素の使い方
- input Type=Numberで小数値を扱う方法
- input Type=Numberでマイナス値を扱う方法
- スマートフォンでよく使用されるtype属性の4種類
- input Type=Number要素の見た目をカスタマイズするCSSテクニック
もう一度、最初から「HTML input Type=Numberの基本的な使い方と属性」を読む↑
Twitterも見てみる?