为什么日期没有在javascript中验证

时间:2016-03-04 15:20:54

标签: javascript date if-statement

如果声明我试图阻止用户输入将来的日期,则以下函数不会验证是否在到达其他日期时继续跳过。

我有月和年的工作。然而,一天不起作用。用户也应该能够输入2016年3月4日但不能> 2016年3月5日

  function fieldDateNotInFutureValidator(prefixPartDateInput){
    if(event.type == "submit") {
        console.log(event.type);

        var selectedDay = $("#proof_of_address_form\\:input-"+prefixPartDateInput+"-day").val();
        var selectedMonth = $("#proof_of_address_form\\:input-"+prefixPartDateInput+"-month").val();
        var selectedYear = $("#proof_of_address_form\\:input-"+prefixPartDateInput+"-years").val();
        var valid = false;

        var today = new Date();
        var currentDay = today.getDate().toString();
        var currentMonth = today.getMonth() + 1;
        var thisMonth = currentMonth.toString();
        var currentYear = today.getFullYear().toString();
        console.log(today,currentDay, thisMonth, currentYear);


        if (selectedYear < currentYear) {
            valid = true;
        } else if (selectedYear == currentYear && selectedMonth <= thisMonth) {
            valid = true;
        } else if (selectedDay > currentDay) {
            return false;
        }
        else {
            valid = false;
        }
        return valid;
    }
    return true;
}

1 个答案:

答案 0 :(得分:0)

您获得的年,月,日价值是多少?如果它们是数字(或数字字符串,如&#34; 2016&#34;,&#34; 3&#34;,&#34; 10&#34;),您可以创建日期,然后将其与当前日期进行比较通过创建今天的日期和零小时,例如

var d0= new Date(year, month-1, day);

// Ensure d0 is a valid date
if (!d0 || d0.getMonth() != month-1) {
  // d0 was not a valid date
} 

var d1 = new Date();
d1.setHours(0,0,0,0);

if (d0 > d1) {
  //d0 is a future date;
}