在 Chrome 中输入类型=日期本地时显示秒数

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

在 google chrome 中,如果我将

datetime-local
类型的输入值设置为包含秒的时间,其中秒值为 0,Chrome 决定不在输入上显示秒值,这意味着用户无法将秒设置为全部。

例如如果我将该值设置为

2013-10-24T20:36:01
那么 Chrome 将显示一个输入,用户可以将日、月、年、小时、分钟和秒更改为他们想要的任何内容(包括 0)。如果我将值设置为
2013-10-24T20:36:00
那么秒部分就会消失。我可以理解,如果没有传入秒值,则不会显示它,但我明确将它们设置为 0,所以我假设它会显示它们。

这是一个问题的原因是因为我正在从数据库读取时间,如果其中任何一个已设置为 0 秒,则用户无法在不使用开发人员工具破解的情况下更改时间!

我错过了什么吗?

谢谢!

html google-chrome input
4个回答
104
投票

添加步骤属性将解决您的问题。

<input type=datetime-local value="2013-10-24T20:36:00" step="1">

step属性默认值为60(一分钟)。


3
投票

2022 年 5 月

已经有一段时间了,你一定已经继续了,但如果有人来到这里寻找更简单的解决方案,那么试试这个

Chrome 版本:

Version 100.0.4896.127

<input type="time" step="1" name="timeinput">

这将输出小时:分钟:秒


2
投票

我知道这已经很旧了,但我做了一个非常简单的解决方法,我的问题是验证,所以它不直接适合,但可能是一个跳板

        function dateMachRegex(date) {
            const regex = /^(\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2})$/g;
            if (date.match(regex)) {
                return true;
            } else if ((date+":00").match(regex)) {
                return true;
            }
            return false;
        }

0
投票

您有一个步骤=1的日期时间本地输入,并且您希望确保提交完整的字符串(例如不带时区的 ISO 8601),即使秒数为零。 使用 php,定义输入名称(例如 input name="datetime"):

$datetime = $_POST["datetime"];
$datetime1 = new DateTime($datetime);
$datetime2 = $datetime1 -> format('Y-m-d\TH:i:s');

即使秒为“00”,你也肯定会得到一串 19 位数字

© www.soinside.com 2019 - 2024. All rights reserved.