2013-04-20 121 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