【问题标题】:jQuery set value of time input tagjQuery设置时间输入标签的值
【发布时间】:2021-08-10 20:17:19
【问题描述】:

我正在尝试使用 jQuery 通过动态赋值来设置 type="time" 的 html 输入标签的值。

HTML 标记代码:

<input class="form-control" style="font-size: 1em;" type="time" name="time_start" id="time_start" value="" />

jQuery 赋值代码;

$('#time_start').val(dataIn.time_start);
// dataIn.time_start = "03:00:00 PM" (confirmed in console.log(dataIn))

我的表单中的所有其他字段都可以使用此功能,但出于某种原因,此特定字段根本不会使用。 “时间”类型的输入有什么特别之处吗?

【问题讨论】:

  • 调试 JS 时始终检查控制台。您会看到一条警告,告诉您为什么这不起作用:The specified value "03:00:00 PM" does not conform to the required format. The format is "HH:mm", "HH:mm:ss" or "HH:mm:ss.SSS" where HH is 00-23, mm is 00-59, ss is 00-59, and SSS is 000-999.
  • 我很困惑这不符合,因为该值最初是通过使用浏览器自己的内置时间选择器创建的,当您将输入设置为“时间”时使用。那么,如果浏览器(Chrome)是条目的来源,这怎么会不是预期值呢?
  • 我不是在挑战您的观点,因为正如您所说,该警告肯定存在于调试控制台中。我只是不明白为什么浏览器会提供不可接受的价值。
  • 这个问题是因为时间输入和日期输入使用客户端的语言环境,而不是单一的特定格式。作为开发人员,这很烦人,但对 UX 来说是有意义的。

标签: html jquery input


【解决方案1】:

MDN:

时间输入的值始终采用包含前导零的 24 小时格式:hh:mm,无论输入格式如何,都可能基于用户的区域设置(或由用户代理)选择。如果时间包括秒(请参阅使用 step 属性),格式始终为 hh:mm:ss

03:00:00 PM 不是有效时间。您需要将其指定为15:00:00

<input type="time" value="03:00:00 PM" />

<input type="time" value="15:00:00" />

【讨论】:

  • 我认为我刚刚发现的问题是您是对的,因为它会生成 24 小时格式。但是,似乎将其存储到数据库的代码将其转换为我在此处发布的内容,因此破坏了时间输入的预期格式结构。谢谢大家的帮助!
猜你喜欢
  • 2014-09-29
  • 2022-10-14
  • 1970-01-01
  • 2020-10-30
  • 1970-01-01
  • 2016-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多