从<input type =“date”.... =“”/>验证日期

时间:2014-07-29 10:12:45

标签: javascript php validation date

我想验证输入日期类型的字段。目前,我正在尝试使用javascript方法来验证字段。

这是我用过的代码。

var RE_DOB = /^([0-9]{2})\/([0-9]{2})\/([0-9]{4})$/;

我目前的日期格式是29/07/2014

只是想知道如何验证输入日期类型的字段。我能够在文本上实现它们,但如果输入类型是日期,那么用户可能在移动设备上使用网站就会很好,它会在这些设备上显示日期选择器。

2 个答案:

答案 0 :(得分:0)

在内部,日期输入的值为ISO-8601 standardYYYY-MM-DD

然而,在外部,日期输入将使用用户计算机定义的任何格式(区域设置感知),使人们可以轻松使用。

您的验证应该正在寻找^\d{4}-\d\d-\d\d$(虽然仅此一项对于日期验证来说是不够的,除非9876-54-32是您的有效日期!)

答案 1 :(得分:0)

您仍然可以将所有内容输入type="date"输入字段。 type="date"属性唯一的作用是显示日期选择器(在大多数移动设备上为e.x.)。尚未实施浏览器验证。

您需要的是:

  1. 服务器端验证(PHP)
  2. 可选的客户端验证(JS)
  3. 它们取决于您希望接受的格式。如前所述,您可以使用JavaScripts match()字符串函数来验证客户端站点上的输入。例如

    if(yourInput.match(/^\d{4}-\d{2}-\d{2}$/) == false)
        alert('invalid date');
    

    验证客户端的YYYY-MM-DD模式。

    在服务器端,您应该使用DateTime::createFromFormat()DateTime::__construct()并检查DateTime::getLastErrors()是否有解析错误,这些错误会告诉您用户的输入不是有效日期。