Javascript 输入日期时间本地的HTML 5表单验证

Javascript 输入日期时间本地的HTML 5表单验证,javascript,html,validation,Javascript,Html,Validation,我正在尝试使用developer.mozilla.org中描述的HTML5进行表单验证。我正在用Chrome浏览器测试它。两个问题 当输入类型为datetime local时,我无法使用checkValidity()传递表单。datetime local的输入格式非常严格(Chrome强制它使用特定的格式),但它就是不通过。为什么? 此datetime local字段不应为必填字段。当用户未指定输入时,如何使其通过 我在chrome 46和chrome 46 beta中遇到了这个问题,其中“da

我正在尝试使用developer.mozilla.org中描述的HTML5进行表单验证。我正在用Chrome浏览器测试它。两个问题

  • 当输入类型为
    datetime local
    时,我无法使用
    checkValidity()
    传递表单。datetime local的输入格式非常严格(Chrome强制它使用特定的格式),但它就是不通过。为什么?
  • datetime local
    字段不应为必填字段。当用户未指定输入时,如何使其通过

  • 我在chrome 46和chrome 46 beta中遇到了这个问题,其中“datetime”feild是一个必填字段(对于输入格式YYYY-MM-DDThh:MM:ssTZDPTDHMS,用户只有两个选项,请参阅以了解值格式和兼容性问题。)

    所以我没有用

    <input type="datetime" />
    
    但是您可以完全跳过Date.js,使用本机JavaScript,如下所示:Source()

    另外请注意,Internet Explorer或Firefox中不支持带有
    type=“datetime local”
    元素(请参阅),但您可以尝试以下方法:

    <!DOCTYPE html>
    <html>
    <head>
      <meta charset="UTF-8" />
    <head>
    <body>
    <script>
      var input = document.createElement("input");
      input.setAttribute("type", "datetime-local");
      document.getElementsByTagName("body").appendChild(input);
    </script>
    </body>
    </html>
    
    
    var输入=document.createElement(“输入”);
    setAttribute(“type”,“datetime local”);
    document.getElementsByTagName(“body”).appendChild(输入);
    
    请在
    jsbin.com
    jsfiddle.net
    中显示您的代码无法复制问题,请在问题本身中添加一些代码。我最接近于复制问题的方法是只填充部分字段,将一半字段留空(但验证错误是因为字段不完整,而不是因为它是必需的)。我实际上在JQuery mobile上,我不知道这是否与此有关。但好的,我会再试一次,在网站上放一些代码,看看以后是否可以复制它。谢谢,Huggie,我的回答对你有帮助吗?你介意分享你是否以及如何解决这个问题吗?
    <input type="text" />
    
    userInput = userInput || 'Thu, 1 July 2004 22:30:00';
    Date.parse(userInput );
    
    var today = new Date();
    var birthday = new Date('December 17, 1995 03:24:00');
    var birthday = new Date('1995-12-17T03:24:00');
    var birthday = new Date(1995, 11, 17);
    var birthday = new Date(1995, 11, 17, 3, 24, 0);
    var unixTimestamp = Date.now(); // in milliseconds
    
    <!DOCTYPE html>
    <html>
    <head>
      <meta charset="UTF-8" />
    <head>
    <body>
    <script>
      var input = document.createElement("input");
      input.setAttribute("type", "datetime-local");
      document.getElementsByTagName("body").appendChild(input);
    </script>
    </body>
    </html>