验证日期,以便日期不能在将来或过去

时间:2015-05-15 10:58:25

标签: javascript jquery validation

我有这个有日期输入的表格。在Javascript中,我可以确保所选值的最佳方式是未来日期或过去日期。我已经实现了jQuery日期选择器来选择日期,请参阅下面的代码

<html>
  <!--maina-->
<link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css">
<script src="//code.jquery.com/jquery-1.10.2.js"></script>
  <script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script>
<link href="main.css" rel="stylesheet" type="text/css"/>

<script>
$(function() {
    var date = $('#datepicker').datepicker({ dateFormat: 'yy-mm-dd' }).val();
});

function ValidateForm(){
	var date_of_circulation = document.forms["myForm"]["date_of_circulation"].value;
		if (date_of_circulation == null || date_of_circulation ==""){
			alert ("You have to select the date the manuscript was circulated");
			return false;
		}
	}
</script>

<form enctype="multipart/form-data" name = "myForm" action = "" onsubmit="return ValidateForm()" method = "post">
Date of circulation:<input name="date_of_circulation" input type="text" id="datepicker"></p>
<input name = "add_manuscript" type="submit" value = "submit">
</form>
</html>

3 个答案:

答案 0 :(得分:3)

你可以这样做

var yourDate = new Date("12/5/2015"); //input value

var todayDate = new Date(); //Gets the today's date value

您必须使用函数setHours

if(yourDate.setHours(0,0,0,0) == todayDate.setHours(0,0,0,0));
{
    //Do your stuff
}

注意:您也可以使用jquery的datepicker执行此操作

var currentDate = new Date();
$("#datepicker").datepicker("setDate", currentDate);

这样您就可以确定已经选择了今天的日期。

编辑:您还可以查看 datejs

datejs API Documentation

答案 1 :(得分:0)

如果日期字段必须设置为当前日期,则没有未来日期或过去日期 将文本字段的默认值设置为当前日期,您不需要使用日期选择器,因为没有任何其他日期选项的日期选择器不是用户友好的。 同样通过这种方式,您无需在提交时验证表单。

<input name="date_of_circulation" input type="text" id="datepicker" value="<?php echo date('Y-m-d'); ?>" readonly="readonly">

将输入框设置为只读,以便用户无法更改日期。

答案 2 :(得分:0)

我通过引入maxdate和mindate找到了一个有效而简单的解决方案,如下所述:date picker restrict date range。重新考虑验证规则后,我决定date_of_circulation值的逻辑验证可以是过去的日期但不超过当前日期,因此将日期选择器中的var日期更改为

var date = $("#datepicker").datepicker({ maxDate: new Date,dateFormat: 'yy-mm-dd', minDate: new Date (0) });