2013-04-20 151 views
2

我是Javascript編程的新手,我試圖從一個外部Javascript文件獲得的日曆片段中驗證輸入日期<input>的日期。我正在驗證日期以檢查用戶是否輸入了過去的日期。如果輸入的日期是過去的日期,那麼我需要打印一條警告消息來輸入將來期間的有效日期。Javascript驗證輸入的日期

我接受輸入日期字段在以下HTML代碼:

<input size="12" id="inputField" name="inputField" autofocus="" type="date"  oninput="return dateValidate(inputField)"/> 

我的JavaScript函數來驗證輸入的日期是:

<script type="text/javascript"> 
function dateValidate(inputField) 
{ 

var v2 = document.getElementById('inputField'); 
var pickeddate = new Date(v2.Value); 
todayDate = new Date(); 
if(pickeddate > todayDate){ 
    return true; 
} else { 
    alert("Enter a valid Date"); 
} 
} 

但這代碼似乎並不奏效。當我在<input>字段中輸入過去的日期並標籤時,我想要運行此Javascript函數。我想在輸入字段時驗證日期,而不是在提交表單時。

回答

2

你可以試試這個

HTML

<input size="12" id="inputField" name="inputField" autofocus="" type="date"  onblur="return dateValidate(this)"/> 

JS

function dateValidate(inputField) 
{ 
    var pickeddate = new Date(inputField.value); 
    var todayDate = new Date(); 
    if(pickeddate > todayDate) 
    { 
     return true; 
    } 
    else 
    { 
     alert("Enter a valid Date"); 
    } 
} 

DEMO.

+0

爲什麼'.getTime()'? – Bergi 2013-04-20 19:22:47

+0

獲取時間戳,[這裏](https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date/getTime)。 – 2013-04-20 19:27:47

+1

我知道它做什麼,但你爲什麼使用它?這是不必要的,你可能想重複使用'pickedDate'作爲* Date對象*。 – Bergi 2013-04-20 19:32:29

4

它不工作,因爲在你的代碼中的問題,只需更換此:

var pickeddate = new Date(v2.Value); 

與此:

var pickeddate = new Date(v2.value); // 'value' should be in lower case 

因爲,這是不正確的,在pickeddate總是undefined和代碼沒有工作。

+2

不'undefined',但一個'Date'對象與' NaN值爲t在技​​術上正確。但在比較中,這是相同的... – Bergi 2013-04-20 19:22:29