【问题标题】:Input on datetime-local doesn't work if value is set via script如果通过脚本设置值,则 datetime-local 上的输入不起作用
【发布时间】:2020-10-28 12:40:38
【问题描述】:

假设我有以下日期/时间输入:

<input type="datetime-local" value="2020-07-08T01:40:01.123" />

这会在日期/时间选择器中显示日期/时间。选择新的日期/时间会按预期更新值。

现在,假设我有一个日期/时间输入,我用脚本设置它的值:

<input type="datetime-local" />

稍后在我的 JavaScript 中:

document.querySelector('input').value = '2020-07-08T01:40:01.123';

这似乎会导致相同的日期/时间选择器和值,就像第一个示例一样。除了用户无法更新日期/时间。它似乎被锁定在最初设置的任何位置。

我是否正确设置了值?这是浏览器错误吗?我在 Windows 上使用 Chrome。

JSFiddle 示例:https://jsfiddle.net/4buswncz/

【问题讨论】:

  • 你可以这样做:document.querySelector('input').setAttribute('value', '2020-07-08T01:40:01.123');,至于为什么它会锁定 UI,我不太确定...
  • 谢谢尼克。是的,这种解决方法可能有效。不幸的是,我必须修改我的 UI 库 (Riot.js) 才能做到这一点,因为它似乎正在使用 .value 而由于某种原因没有调用 setAttribute。嗯。我会深入研究它。谢谢你的想法。
  • 你的小提琴在 Chrome 中对我有用(第二个最新版本:))。无论是否通过脚本设置,我都没有在 FF(最新版本)中获得弹出日历,但它仍然是可编辑的。你用的是什么浏览器?
  • @FluffyKitten Strange... 我在 64 位 Windows 上使用 Chrome v83.0.4103.116。对我来说,如果我单击日历图标打开选择器,然后选择任何其他值,则实际框的值不会更新。
  • 对不起,你是对的......我使用箭头和数字键来编辑日期,它们都工作正常。日历日期是可选择的,但我没有考虑检查他们是否真的改变了日期。奇怪的是它可以通过文本字段而不是通过弹出日历来更改...

标签: html html-input html5-input-date


【解决方案1】:

您正在更改所有输入标签的值。 最好设置一个 id 或 class,然后将 value 更改为该 id。

【讨论】:

  • 这不仅不正确,而且不适用于这种情况。 querySelector() 只返回一个元素。出于演示目的,我以这种方式发布此代码。页面上没有其他输入。
  • 它在我的浏览器中运行,我可以更改内容。您曾经尝试按 CTRL+SHIFT+I 它可能会修复您的错误。
猜你喜欢
  • 1970-01-01
  • 2017-04-12
  • 1970-01-01
  • 2018-11-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多