javascript - HTML5 : input type duration

标签 javascript html css angular

有没有办法使用输入类型持续时间 .我正在尝试以某种方式进行输入,用户添加类似这样的持续时间06:30:27:15 ( hh:mm:ss:ms )并且应该只允许 (0-23:0-59:0-59:0-59) .

任何帮助表示赞赏!

注意!:我想在 Angular2+ 中实现这个。

最佳答案

遗憾的是,HTML 输入和 JavaScript 本身都不支持持续时间数据类型。 <input type="time">是一天中的某个时间,并且可能会根据您的区域设置显示 AM/PM 选择器。

最好的办法是使用文本输入并使用 JavaScript 事件自动插入 :并忽略无效输入。使用模式属性也可能有所帮助。在从 JavaScript 方面使用它之前,请务必将值转换为数字。这里有一些东西可以帮助您入门。

{
  let durationIn = document.getElementById("duration-input");
  let resultP = document.getElementById("output");
  
  durationIn.addEventListener("change", function (e) {
    resultP.textContent = "";
    durationIn.checkValidity();
  });
  
  durationIn.addEventListener("invalid", function (e) {
    resultP.textContent = "Invalid input";
  });
}
input:invalid:not(:focus) { background: red; }
<input id="duration-input" type="text" required pattern="[0-9]{2}:[0-9]{2}:[0-9]{2}:[0-9]{2}" value="00:00:00:00" title="Write a duration in the format hh:mm:ss:ms">

<p id="output"></p>


我确信有许多开源库为此提供了现成的小部件。

关于javascript - HTML5 : input type duration,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60065890/

相关文章:

javascript - 想要在 html 页面中使用 jquery 或 javascript 显示和隐藏数据

javascript - 在 JavaScript ES5 中对数组进行子类化

javascript - HTML/PHP 表单到 XML

mySQL 表 : FROM_UNIXTIME and INTO OUTFILE issues 上的 PHP 脚本

html - 右对齐父 <p> 内的 <span>

Javascript Slider 问题,基于下拉菜单输出结果

javascript - 链接到其他页面并滚动到部分

html - 悬停在底部的三 Angular 形带边框

javascript - 将字符串附加到具有相同类名的元素

javascript - 更改标签类的调试方法