• HOME > 
  • HTML > 
  • HTMLのinputのdateで日付の入力欄を作る【初期値や...

HTMLのinputのdateで日付の入力欄を作る【初期値や期間の制限】

投稿日:

このページにはGoogleアドセンス広告とアフィリエイト広告が含まれています。

カテゴリー記事のアイキャッチ画像
広告
広告

日付の入力欄を作るには?

HTMLのinputタグのtype属性にdateを指定すると、フォームなどに日付の入力欄を設置することができます。

ただのテキストボックスに手入力してもらっても問題はありませんが、「input type="date"」を使えばカレンダーが表示されるので、ユーザーに直感的に日付を入力してもらうことが可能になります。

input type="date"の例

表示されるカレンダーの見た目はOSやブラウザによって異なります。これはデフォルトCSSによりスタイルが決められているためで、スタイルシートで上書きすれば思い通りのデザインに変更することも可能です。

input[type="date"]の使い方

日付の入力欄はinputタグのtype属性にdateを指定することで使用できます。(inputタグに閉じタグは不要です。)

日付の入力欄の書き方

初期値を設定する【value属性】

ユーザーが日付を選択するまでtype="date"による入力欄には「yyyy/mm/dd」という文字が表示されています。

ここに初期値として任意の日付を表示させたい場合は、「value属性」を設定します。

value属性の書き方

なお属性値に使用する日付は「yyyy-mm-dd」というフォーマット(書式)で記述する必要があります。(それ以外の書式では無効になります。)

HTML

<input type="date" value="2023-01-01">

プレビュー

当日の日付を初期値にする【Javascript】

上記のようにHTML内に記述した場合は初期値は固定されるため、常に入力当日の日付を初期値として設定したい場合は、Javascriptを使って動的に日付を取得する処理を作る必要があります。

HTML

<input type="date" id="datepicker" value="">

JavaScript

window.onload = function(){
    var getToday = new Date();
    var y = getToday.getFullYear();
    var m = getToday.getMonth() + 1;
    var d = getToday.getDate();
    var today = y + "-" + m.toString().padStart(2,'0') + "-" + d.toString().padStart(2,'0');
    document.getElementById("datepicker").setAttribute("value",today);
}

プレビュー

1行目ページの読み込まれたら処理を開始します。

2~5行目現在日時を取得します。

6行目input="date"のvalueの値に対応するように、「yyyy-mm-dd」の書式にフォーマットします。

7行目valueの値にセットして完了です。

選択可能な期間を設定する【minとmax属性】

例えば予約フォームなどを作るときには今日より過去の日付は選択できないようにしておく必要があります。

min属性とmax属性を使えば選択可能な期間を制限することが可能です。

min属性とmax属性においても属性値に使用する日付は「yyyy-mm-dd」というフォーマット(書式)で記述する必要があります。(それ以外の書式では無効になります。)

HTML

<input type="date" value="2023-01-15" max="2023-01-25" min="2023-01-05">

プレビュー

当日の日付を基準に期間を設定する【Javascript】

上記のようにHTML内に記述した場合は期間は固定されるため、常に入力当日の日付を基準として選択可能な期間を設定したい場合は、Javascriptを使って動的に日付を取得する処理を作る必要があります。

下の例では、min属性に動的に取得した当日の値を設定することで、当日より過去の日付は選択できないようにしています。

HTML

<input type="date" id="datepicker2" min="">

JavaScript

window.onload = function(){
    var getToday = new Date();
    var y = getToday.getFullYear();
    var m = getToday.getMonth() + 1;
    var d = getToday.getDate();
    var today = y + "-" + m.toString().padStart(2,'0') + "-" + d.toString().padStart(2,'0');
    document.getElementById("datepicker2").setAttribute("value",today);
    document.getElementById("datepicker2").setAttribute("min",today);
}

プレビュー

一定の間隔で日付を選択可能にする【step属性】

step属性は1日おきや2日おきの日付を選択可能にすることができます。

下の例ではstep属性に「2」を設定したので、1日おきの日付のみ選択できるようになっています。

HTML

<input type="date" step="1">

プレビュー

必須項目にする【required】

日付の入力を必須項目にしたい場合は、「required」を追記します。

日付を入力せずに送信を行おうとするとメッセージが表示されて送信がキャンセルされます。

変更不可にする【readonly】

あらかじめ設定した初期値からユーザーが変更できないようにしたい場合は「readonly」を追記します。

入力欄はグレーの状態で表示されて操作することができなくなります。

無効化する【disabled】

disabled属性を設定すると、その入力欄を無効化することが出来ます。

入力欄はグレーの状態で表示されて変更することができなくなります。

readonlyとdisabledの違いはデータが送信されるかどうかです。readonlyはデータ自体は送信されますが、disabledを設定するとデータの変更できないだけでなくそのデータ自体も送信されなくなります。

まとめ

以上がHTMLのinputのtype="date"で日付の入力欄を作る方法と初期値や期間の制限を設けるやり方です。

リンク先のサムネイル
jQuery UIのdatepickerの使い方

jQueryUIのdatepickerを使えば、日付の入力フォームを設置した時にカレンダーを表示させて、ユーザーに直感操作で日付を選択してもらうことができるようになります。便利ですが、デフォルトでは英語表記のため、日本語化を行う必要があります...【もっと読む】

関連する記事

サムネイル

ブラウザキャッシュを回避するCache Bustingの方法……

2023年09月01日
Cache Busting(キャッシュバスティング)とはキャッシュを利用せずに読み込みするように指定することです。
サムネイル

HTMLのdatalistタグの使い方【文字入力とプルダウン……

2023年08月08日
HTMLのdatalistは、テキストボックスとセレクトボックスを組み合わせたような入力欄を作ることができるタグです。一見普通のテキストボックスですが、クリックすると用意した入力候補が表示されます。
サムネイル

HTMLでラジオボタンを作成する方法【初期値の設定・チェック……

2023年08月08日
HTMLのinputタグのtype属性にradioを指定すると、フォームなどにラジオボタンを設置することができます。複数の選択肢の中からどれかひとつをユーザーに選んでもらいたい時に使用します。
サムネイル

HTMLのselectタグの使い方【multiple属性で複……

2023年08月03日
HTMLのselectはフォームなどにセレクトボックスを設置することができるタグです。あらかじめ用意した選択肢をプルダウンの形で表示させます。
サムネイル

HTMLのtextareaタグの使い方【inputとの違いや……

2023年07月10日
HTMLのtextareaはフォームなどに改行可能な入力ボックスを作成することができるタグです。属性値を設定することで幅や行数などを変更することが可能です。
サムネイル

HTMLのh1~h6タグのSEO対策における役割と使い方【画……

2023年07月10日
HTMLのh1~h6タグはページ内でタイトルや見出しを表示させる際に使用するタグです。Hは見出しという意味を持つ「Heading」の頭文字です。