Ios Mobile Safari(10.3.1)日期时间本地“;请输入一个有效值";错误

Ios Mobile Safari(10.3.1)日期时间本地“;请输入一个有效值";错误,ios,iphone,html,input,safari,Ios,Iphone,Html,Input,Safari,我在iOS最新版本的Mobile Safari上遇到了一个错误。此错误在iOS版本10.3之前没有发生。有人能给我指出正确的方向吗 这是原始HTML,附件是已检查的视图和移动设备(iPhone 7)的视图 这似乎是Safari中的一个bug,但您可以通过使用javascript提交表单来跳过它 $("#new_apply_form").submit(); 这是狩猎中的一只虫子。您应该使用JS来提交表单 JS:form.submit()简单的解决方案 IOS要求在“datetime local

我在iOS最新版本的Mobile Safari上遇到了一个错误。此错误在iOS版本10.3之前没有发生。有人能给我指出正确的方向吗

这是原始HTML,附件是已检查的视图和移动设备(iPhone 7)的视图


这似乎是Safari中的一个bug,但您可以通过使用javascript提交表单来跳过它

$("#new_apply_form").submit();

这是狩猎中的一只虫子。您应该使用JS来提交表单

JS:
form.submit()

简单的解决方案

IOS要求在“datetime local”类型的输入字段上设置一个值

示例:

就这样:)

我个人觉得将默认值设置为用户当前的本地时间很好。这必须在不含秒的等时内格式化,因此其代码可能类似于:

// get the iso time string formatted for usage in an input['type="datetime-local"']
var tzoffset = (new Date()).getTimezoneOffset() * 60000; //offset in milliseconds
var localISOTime = (new Date(Date.now() - tzoffset)).toISOString().slice(0,-1);
var localISOTimeWithoutSeconds = localISOTime.slice(0,16);

// select the "datetime-local" input to set the default value on
var dtlInput = document.querySelector('input[type="datetime-local"]');

// set it and forget it ;)
dtlInput.value = localISOTime.slice(0,16);

此消息由客户端验证触发。如果您没有使用客户端验证,那么我发现您可以通过使用
novalidate
属性将其关闭来解决此问题,如下所示:

<form action="/myaction" method="POST" novalidate>

对于像我一样仍在与IOS datetime local抗争的用户

这是由于当值属性/属性未设置或设置为无效值时,IOS设置的datetime本地值格式无效造成的

<input type='datetime-local' onChange='alert(event.target.value)'>

就是这样。

格式('Y-m-d\TH:i')
为我工作。

感谢上帝,不仅仅是我!我会将此提交给Safari Bug团队。在这里提交Bug供参考。此外,代码片段只是一次又一次地重新加载页面。它需要等待submit按钮上的onClick事件,否则它只是不断地重新加载页面<代码>$(“#小时”).submit(函数(事件){return true;})它仍然要求输入有效日期:/只是FYE,我们不能看到这个bug,因为它是你的苹果ID私有的。考虑重新张贴到开放雷达:这对我也没用,通过向提交按钮添加以下内容。code>onClick=“form.submit()”只需重新加载页面,而不提交任何信息。但这不适用于我的用例,我希望确保用户实际检查并验证了这些字段是否正确。为我预先填充这些字段是完全不合适的。(标记为正确,因为我现在可以提交表单了。虽然我讨厌苹果要求这样做,但这不是你的错。谢谢你的帮助。)不起作用。我甚至将value属性和.value都设置为这种格式的日期,但仍然没有骰子!啊!如果我找到解决方案,我会更新。苹果认为不同。。。3岁的小虫子还没修好,只是我自己偶然发现了同样的东西。除了datetime local外,还有其他可行的旅行方式吗?@SnorreHukkelå不是我发现的。我确实在很多很多年前提交了这个bug。还是没什么问题。
const onChange = (event) => {
    event.target.value = event.target.value.substr(0, 16);
}