2012-12-08 171 views
0

我已經有一個表單用戶可以輸入任何日期,但我想設置一個日期範圍驗證。例如:從2012年1月12日至1月1日至2013年,系統不能接受用戶的任何日期,不在範圍..我試過這個JavaScript代碼,但它並沒有給我任何警報甚至當日期不在範圍內..Javascript - 日期範圍驗證

這是我的窗體的一部分:

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>"; 

,這是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> 
+1

請用[_specific question_]更新您的文章(http://stackoverflow.com/faq)。 –

+0

你的javascript控制檯給你什麼錯誤信息?如果您想將它們與日期類型值進行比較,您應該投下您輸入的內容。 – cheesemacfly

+0

@cheesemacfly這不是我收到的錯誤消息!我說過我沒有得到任何這些意味着代碼不起作用 –

回答

3

比較日期,您應該使用UNIX時間戳,現在你從值得到的第一個日期是一個字符串,你不能比較日期對象?

確保您有在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") 
    } 
} 
+0

我不確定我是否理解你的觀點,你的意思是在數據庫中還是在哪裏?如何確保我在unix時間有時間戳?上述示例中使用的[getTime()方法](http://www.w3schools.com/jsref/jsref_gettime.asp)中的 –

+0

返回unix time - 1970年1月1日至指定日期之間的毫秒數。 @annalord – SushiGuy

0

可以使這樣的功能:

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; 
} 

和測試任何日期像調用這個函數:

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

這是Working Demo

+0

所以我必須在JavaScript中做兩個函數? –

+0

謝謝你,但是調用函數呢?我應該像這樣把onsubmit =「return validation(form);」 –