К сожалению, ни HTML входы, ни JavaScript сами по себе не поддерживают тип данных продолжительности. <input type="time">
для времени суток и может отображать селекторы AM / PM в зависимости от вашей локали.
Лучше всего работать с текстовым вводом и использовать JavaScript события для автоматической вставки :
и игнорировать неверные данные. Использование атрибута pattern также может помочь. Обязательно преобразуйте значение в число, прежде чем использовать его со стороны 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>
Я уверен, что есть много библиотек с открытым исходным кодом, которые предоставляют готовый виджет для этого.