为什么Firefox以分钟为最小单位显示时间输入的秒数?

问题描述 投票:0回答:1

问题

对于time类型的输入,Firefox(OS X上的v65.0.1)对我来说表现得很奇怪。即使这样的输入被配置为使用一分钟的step值(这是默认值),并且因此不处理秒,它显示用于输入秒的部分(尽管它被禁用用户输入)。即使是时间类型输入的MDN documentation,如果step属性小于60秒,输入也只会显示秒输入区域。

这是Firefox中的一个错误,就像在我看来一样?有什么方法可以解决这个问题吗?

下面的屏幕截图显示了如何在Firefox中为我呈现输入,即使步骤为60秒,因此不可用。

screenshot

示范

以下提供时间输入和一段文本,用于显示输入到字段中的时间。这适用于f.ex. Chrome,但在Firefox上却没有,因为input事件永远不会触发(因为输入的秒区域,你甚至无法填充)。

const elem = document.getElementById('time-input')
const displayElem = document.getElementById('time-display')
elem.addEventListener('input', (e) => {
  const {value} = e.target
  displayElem.textContent = value
})
<input id="time-input" type="time">
<p>Current time is: <span id="time-display">n/a</a></p>
javascript html firefox
1个回答
1
投票

编辑:不要误认为AM / PM占位符破折号输入占位符!

我刚才看到你在问题中发布的那张照片中所看到的内容。破折号是AM/PM占位符。

要删除这些占位符(在FF中),浏览器区域设置用于确定是否使用了am/pm。如果语言环境设置为24小时语言环境,则时间将为24小时格式,您将丢失am/pm选择器。

const elem = document.getElementById('time-input')
const displayElem = document.getElementById('time-display')
elem.addEventListener('input', (e) => {
  const {value} = e.target
  displayElem.textContent = value
})

const elem2 = document.getElementById('time-input2')
const displayElem2 = document.getElementById('time-display2')
elem2.addEventListener('input', (e) => {
  const {value} = e.target
  displayElem2.textContent = value
})
<input id="time-input" type="time" step="59">
<p>Current time is: <span id="time-display">n/a</span></p>
<br>
<input id="time-input2" type="time">
<p>Current time is: <span id="time-display2">n/a</span></p>
© www.soinside.com 2019 - 2024. All rights reserved.