我在窗体上有一个日期字段。日期字段中的日期必须在今天的日期之后,而不是过去。它也必须在从今天起的30天之内。因此,如果今天是2013年1月15日,那么表格只能在15/02/2013之后的30天内接受任何日期,因此14/04/2007加上30天!验证日期字段
任何请帮助正确的JavaScript代码?我是一个稚嫩的人,对于如何达到这个目标没有任何线索。
我在窗体上有一个日期字段。日期字段中的日期必须在今天的日期之后,而不是过去。它也必须在从今天起的30天之内。因此,如果今天是2013年1月15日,那么表格只能在15/02/2013之后的30天内接受任何日期,因此14/04/2007加上30天!验证日期字段
任何请帮助正确的JavaScript代码?我是一个稚嫩的人,对于如何达到这个目标没有任何线索。
我想你需要的东西是这样的:http://jsfiddle.net/hqNxW/1/
和代码...
的JavaScript
var output = document.getElementById('messageOutput');
document.getElementById('validate').onclick = function() {
var value = document.getElementById('date').value;
if (!validateDate(value)) {
notify('Invalid date format');
} else {
if (!validateDateRange(value)) {
notify('The date should be after today but not more than 29 days!');
} else {
notify('Valid date');
}
}
}
function notify(msg) {
output.innerHTML = msg;
}
function validateDate(date) {
return (/^\d{2}-\d{2}-\d{4}$/).test(date);
}
function validateDateRange(inputDate) {
var now = new Date(),
after30Days = new Date().setDate(now.getDate() + 30)
date = new Date(inputDate);
return date > now && date < after30Days;
}
HTML
<input type="text" id="date" /> <button id="validate">Validate</button>
<div id="messageOutput">Enter a date in the following format: mm-dd-yyyy</div>
所有这些单独功能的重点是什么?你可以把它们放在一个单一的功能中。 –
是的,我可以但validateDate是更通用的功能,可以在以后重用。为了一致性,我在不同函数中分隔了范围值。 –
我宁愿为HTML5浏览器设置''来自动显示日历,并将验证和javascript验证一起作为后备。 –
您的验证功能应该是这样的:
function validateDateField()
{
var result=true; // optimistic....
var now=new Date();
var thisMonth=now.getMonth();
var maxDate=new Date();
maxDate.setMonth(thisMonth+1);
//---------getting the user input:
var dateStr=document.getElementById('dateField').value;
//change "dd/mm/yyyy" format to "yyyy/mm/dd" format:
dateStr = dateStr.replace(" ","");
dateStr = dateStr.substr(6,4)+"/"+dateStr.substr(3,2)+"/"+dateStr.substr(0,2);
//---------validation part:
document.getElementById('feadBackLable').innerHTML="";
try
{
var userDate=new Date(Date.parse(dateStr));
if(userDate < now || userDate > maxDate)
{
result=false;
document.getElementById('feedBackLable').innerHTML="your date should be one of the next 30 days";
}
}
catch(err)
{
result=false;
document.getElementById('feadBackLable').innerHTML="please enter a valid date: dd/mm/yyyy";
}
//---------------------------
return result;
} // function
谢谢你..它工作正常.. –
@Chris jQuery框架?认为不是 –