javascript - 步骤属性不适用于 HTML 输入类型

标签 javascript html forms validation

我想要一个时间输入字段,用户只能选择完整的小时数。在我的示例中,它将是 00:00、01:00、02:00 等等。这就是为什么我将 step 属性设置为 3600。因为 3600 秒等于一小时。这是我的代码:

<label for="appt-time">Choose an appointment time: </label>
<input id="appt-time" type="time" name="appt-time" value="00:00" step="3600">

这在我使用箭头键选择时间时有效。但是,当我单击输入字段内的小时图标时,我可以选择分钟,如下图所示。我该怎么做才能让用户只能选择小时?
enter image description here

最佳答案

正如其他人所说,您应该注意 step 的限制。在浏览器交叉兼容性方面。引用 MDN 文档...

In Chrome and Opera, which are the only browsers to show up/down iteration arrows, clicking the arrows changes the seconds value by two seconds, but doesn't affect the hours or minutes. Minutes (or hours) can only be used for stepping when you specify a number of minutes (or hours) in seconds, such as 120 for 2 minutes, or 7200 for 2 hours).

In Firefox, there are no arrows, so the step value isn't used. However, providing it does add the seconds input area adjacent to the minutes section.

The steps value seems to have no effect in Edge.

(Source: MDN Documentation: Using time inputs.)


既然你只关心时间,为什么不使用 list 属性?您需要创建一个 datalist 元素,但它相当简单,一天 24 小时,这只有 24 个子元素。另外,您可以自定义开始/结束时间,并根据需要订购。

  <label for="appt-time">Choose an appointment time: </label>
  <input id="appt-time" list="times" type="time" name="appt-time" value="00:00" step="3600">

<datalist id="times">
    <option value="01:00:00">
    <option value="02:00:00">
    <option value="03:00:00">
    <option value="04:00:00">
    <option value="05:00:00">
    <option value="06:00:00">
    <option value="07:00:00">
    <option value="08:00:00">
    <option value="09:00:00">
    <option value="10:00:00">
    <option value="11:00:00">
    <option value="12:00:00">
    <option value="13:00:00">
    <option value="14:00:00">
    <option value="15:00:00">
    <option value="16:00:00">
    <option value="17:00:00">
    <option value="18:00:00">
    <option value="19:00:00">
    <option value="20:00:00">
    <option value="21:00:00">
    <option value="22:00:00">
    <option value="23:00:00">
    <option value="00:00:00">
</datalist>

警告 :这似乎不适用于 Firefox,而且似乎 FF 在这里几乎没有可定制性。但它在 Chrome 中效果更好。您可能想要寻找不同的输入类型。

关于javascript - 步骤属性不适用于 HTML 输入类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64806765/

相关文章:

css - 使2张图像向右浮动并彼此正下方

javascript - 复选框的多维数组?

forms - 形式中的形式。表单控件可以继承吗?

javascript 检查正则表达式是否适用

javascript - 从字符串中提取时间

javascript - 为什么这个 promise 被拒绝了?

javascript - 捕获 JavaScript 中的返回函数

javascript - 删除上传图片的onclick文字

html - 在 HTML 表单上放置多个提交按钮是不好的做法吗?

php - 如何从 php 帖子中删除令人反感的词?