由于日期格式问题,验证无效

时间:2017-10-05 09:33:13

标签: javascript jquery

我已经编写了以下代码来验证日期

        var purchasedate = $("#purchasedate").val().trim();
        var formattedpurchasedate = new Date(purchasedate);
        if(checkValidDate(formattedpurchasedate.toDateString()) == false)
        {
            displayDateErrorMessage("Purchase Date");
            return false;
        }


        function checkValidDate(dateValue)
        {
                var dateFormat = getDateFormat();

                   switch(dateFormat)
                   {
                     case "d-m-Y":
                     var regex = /^((0?[1-9]|[12][0-9]|3[01])[- /.](0?[1-9]|1[012])[- /.](19|20)?[0-9]{2})$/;
                          if(dateValue.match(regex))
                              return true;
                           else
                              return false;
                     break;
                       ...
                       ..
          }

现在我面临一个问题,即在输入文本框中,它的值为12/12/2016。 在函数checkValidDate中,它被视为" 2017年12月12日星期三"。结果总是返回false。

请帮忙!!!

2 个答案:

答案 0 :(得分:0)

尝试使用

if(!checkValidDate(formattedpurchasedate.toDateString()))
    {
        displayDateErrorMessage("Purchase Date");
        return false;
    }

答案 1 :(得分:0)

我不确定你在这里要做什么。但是如果你想验证输入中的字符串,你应该将purchaseate传递给checkValidDate()

if(checkValidDate(purchasedate) === false)

因为这一行:

var formattedpurchasedate = new Date(purchasedate);

它创建一个Date对象,其值来自输入(问题中提到的'12 / 12/2016'),然后(通过此MDN page)此处的代码返回一个可读的字符串日期:

formattedpurchasedate.toDateString()

因此,您在问题中陈述“2017年12月12日星期三”。它将始终采用该形式,因为这是日期及其toDateString方法的作用。