我的网页上有开始时间,开始日期和结束日期,结束时间。我需要确保如果开始日期和结束日期相等,那么结束时间必须大于开始时间,如果结束date大于开始日期,然后用户可以随时输入。如何实现此验证?
答案 0 :(得分:6)
我强烈推荐Datejs之类的东西。这应该给你一个起点:
// get the values from your form
var startDate = $('input[name=startDate]').val(),
endDate = $('input[name=endDate]').val(),
startTime = $('input[name=startTime]').val(),
endTime = $('input[name=endTime]').val()
如果您决定使用Datejs,则应使用Date.parse(startDate)
解析输入字段中的值。查看Getting Started.如果您决定不使用DateJ,可以将getTime()附加到startTime var。 (例如 - endTime.getTime() < startTime.getTime()
)
var error = '';
// if the start date is after the end date
if (startDate > endDate){
var error = error + 'Your start date is after your end date.';
}
// if the start date and end date are the same -- and end time is before the start time
else if(startDate == endDate && endTime < startTime){
var error = error + 'Your end time is before your start time.';
};
// handle any errors
if(error.length){
alert(error);
};
答案 1 :(得分:3)
知道工作原理是很好的,你可以自己构建它而不依赖于框架。如果您想尝试它,假设您的日期和时间有简单的字符串,您可以从这开始:
var dateStart = "Oct 13, 2010";
var timeStart = "10:13";
var dateEnd = "Nov 11, 2011";
var timeEnd = "14:56";
var startDate = new Date(dateStart + " " + timeStart);
var endDate = new Date(dateEnd + " " + timeEnd);
alert(startDate > endDate);
有关实际代码,请参阅http://jsbin.com/oponu3/edit
如果您只是用它来比较时间,那么这将起作用:
var myDate = "Oct 13, 2010";
var timeStart = "10:13";
var timeEnd = "14:56";
var startDate = new Date(myDate + " " + timeStart);
var endDate = new Date(myDate + " " + timeEnd);
alert(startDate > endDate);
您可以通过检查非法日期值来增强此功能。检查JavaScript日期对象的W3C参考:http://www.w3schools.com/js/js_obj_date.asp
// calculate difference (added 2012-04-04)
var milliseconds = Math.abs(startDate.getTime() - endDate.getTime());
var seconds = milliseconds / 1000;
var minutes = seconds / 60;
var hours = minutes / 60;
// etc etc etc