简体   繁体   English

Javascript-日期范围验证

[英]Javascript - date range validation

i've a form user can enter any date , but i want to set a date range validation . 我有一个表单用户可以输入任何日期,但是我想设置一个日期范围验证。 for example: from 1-12-2012 to 1-1-2013 and the system can't accept any date from user that not in the range.. i've tried this javascript code but it doesn't give me any alert even when date not in range .. 例如:从2012年1月12日到2013年1月1日,系统无法接受不在该范围内的用户的任何日期。.我已经尝试过此javascript代码,但它甚至都不会给我任何警报当日期不在范围内时..

this is part of my form : 这是我表格的一部分:

 echo "<tr><th bgcolor='FF6600'> Date <font size='4' color='red'>* </font></th>
        <td> <input type='date' name='v2' value=''   ></td></tr>";


echo "<tr><th bgcolor='FF6600'> Time <font size='4' color='red'>* </font></th>
        <td> <input type='time' name='v3' value=''   ></td></tr>";

        echo "<tr><th bgcolor='FF6600'> Place <font size='4' color='red'>* </font></th>
        <td> <input type='text' name='v4' value=''   ></td></tr>";

and this is the javascript code 这是javascript代码

    <script language="javascript">

    function validation(form)
 {

 var v2 = document.getElementById('v2');
 var date = v2.value;
 if ( (v2 > new date('12/12/2012')) && 
    (v2 < new date('1/1/2013')) ){
    // date is in your valid range
     return true;
} else {
    // date is not in your valid range

    alert("date is not in valid range")
    return false;
}


}

    </script>

To compare dates, you should be using the unix timestamp, and right now the first date you're getting from the value is a string, and you can't compare that against date objects? 要比较日期,您应该使用unix时间戳,现在从值中获取的第一个日期是字符串,您无法将其与日期对象进行比较吗?

Make sure you have timestamps in unix time, and then compare those: 确保您在Unix时间中有时间戳,然后进行比较:

function validation(form) {
    var v2 = document.getElementById('v2'),
      date = new Date(v2.value),
      d1   = date.getTime(),
      d2   = new Date('12/12/2012').getTime(),
      d3   = new Date('1/1/2013').getTime();

   if (d1 > d2 || d1 < d3) {
       return true;
   }else{
       alert("date is not in valid range")
   }
}

You can make a function like this: 您可以创建如下函数:

function checkMyDateWithinRange(myDdate){
    var startDate = new Date(2012, 11, 1);
    var endDate = new Date(2012, 0, 1);     
    if (startDate < myDate && myDate < endDate) {
       return true; 
    }
   return false;
}

and test any date like calling this function: 并测试任何日期,例如调用此函数:

var inputDate= document.getElementById('tbDate'),
date = new Date(inputDate.value);
if(!checkMyDateWithinRange(date)){
    alert('Date is not in range!!!');
}

Here is Working Demo 这是工作演示

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM