0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【Android】Chrome環境で time 型の <input> 要素に秒数の入力領域を表示させない方法

Posted at

<input type="time">

<input type="time"> は、HTML5で追加された <input> タグの type 属性です。
ユーザーが簡単に時刻を入力できるように設計された入力欄を生成します🕛

インターフェイスについて

入力コントロールのユーザーインターフェイスは、ブラウザーによって異なります😷
最近のブラウザでは対応が進んでいますが、 ※Safari はブラウザーの中で唯一実装していません💦
Safari やその他の <time> に対応していないブラウザーでは、<input type="text"> になります。

※iOSの Safari では実装されています。

特にモバイルプラットフォームでは、
時刻の値を指定するのに、それぞれ異なる UI を持っています。
例えば、 Android 版 Chrome の time ピッカーは次のようになっています。

chrome-android-time.png

フォーマットについて

time 入力欄の value は、
ユーザーのロケール (又はユーザーエージェント) に基づいて選択される入力書式とは関係なく、
常に24時制の書式で "hh:mm" または "hh:mm:ss" です。

ブラウザ問題 ←本題✅

Android 版 Chrome 環境では
time の値が常に hh:mm:ss の書式で正規化されてしまい
秒数も指定することができてしまいます😢

そこで、秒数の部分を取り除く方法として step 属性というものがあります✌️

step 属性について

step 属性は時刻を上下させるときに加減する時間の大きさを変更することができます!
↓例えば、5秒単位で時刻が動くようにする場合は以下のようにします。


<input type="time" name="app-time" step="5">

これは整数の値を取り、増加させたい秒数を指定します。
※デフォルト値は60秒 or 1分です

point1

上下の操作を行う矢印を表示するブラウザーである Chrome と Opera では、
矢印をクリックすると秒の値が5秒単位で変わりますが、時と分には影響しません。
時 or 分の刻みは、時 or 分の数を、秒数で指定した場合のみ使用されます
例) step="120" ← 2分刻み、 step="7200" ← 2時間刻み

point2

また、上記のように step="5" と60秒 (1分) よりも小さな値を指定した場合は、
time 入力欄は時と分の隣に秒の入力領域を表示します。 ← 重要

解決方法

つまり、秒数の入力領域を表示させない(秒数を指定させない)ためには
step 属性に60秒 (1分) よりも大きな値を明示的に指定する必要があります


<input type="time" name="app-time" step="60">

これにより time 入力欄の value の書式は "hh:mm" になります👏

最後に

今回はHTML5の <input type="time"> を利用しましたが、
ブラウザーに依存しない方法によって時刻を扱う最善の方法としては、
<select> 要素で時・分・秒を別々のコントロールにすることが一般的だと思います。
または、 jQuery timepicker plugin のような JavaScript ライブラリを使用することが最善でしょう😴

参考

How do I force seconds to appear on an HTML5 “time” input control?

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?