我一直在尝试编写一个找到两个日期差异的函数,如果这两个日期不是20天或更长,则在用户点击表单字段后会显示错误消息。下面的代码应该这样做。但是,看到我对JavaScript真的很陌生,我非常感谢一些帮助和/或建议如何解决我的问题。 `
<html>
<head><title>Form test page</title></head>
<body>
<link rel="stylesheet" type="text/css" href="OnbordingInStyle.css">
<script>
function dateerror() {
var c = 21;
var x = date ();
var y = document.getElementById('expected_start_date').value == "";
if ( x + c - y <= 0) {
datecrossover += "Attention this date is less than three weeks away, please be ready to expect delays with equipment for new employees \n";
}
if (datecrossover !="") {
alert(datecrossover);
return false;
}
}
</script>
<form method="post" action="Test.php" onsubmit="return dateerror()">
<table>
<tr>
<td>
<label for="expectedstartdate">Expected Start Date</label>
</td>
<td><div class="required">
<input type="date" name="expected_start_date" id="expected_start_date" size="15" maxlength="10" />*</div>
</td>
</tr>
<tr>
<td>
<input type="hidden" name="date_completed" id="date_completed" />
<script>
document.getElementById('date_completed').value = Date();
</script>
</td>
</tr>
<tr>
<td>
<input type="submit" name="Submit" value="submit" />
<input type="reset" name="reset" />
</td>
</tr>
</table>
</form>
</body>
</html>
`
答案 0 :(得分:1)
如果将其粘贴到新的.html文件中 - 它应该可以工作:)
<link href="http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css" rel="stylesheet" />
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
<script src="http://code.jquery.com/ui/1.10.2/jquery-ui.min.js"></script>
<script>
$(function() {
$( "#datepicker" ).datepicker();
$( "#datepicker2" ).datepicker();
});
</script>
<br><br><center>
<form action="" method="POST">
<input type="text" name="nowdate" id="datepicker" value="07/01/2014">
<input type="text" name="wantdate" id="datepicker2" value="07/31/2014">
<input type="submit" name="submitJS" id="submitJS" value="Submit" onclick="return ajaxSubmit();">
</form>
<script>
function parseDate(str) {
var mdy = str.split('/')
return new Date(mdy[2], mdy[0]-1, mdy[1]);
}
function daydiff(first, second) {
return (second-first)/(1000*60*60*24);
}
function ajaxSubmit() {
var date1 = $('#datepicker').val();
var date2 = $('#datepicker2').val();
//alert(date1 + " " + date2);
datediff = daydiff(parseDate($('#datepicker').val()), parseDate($('#datepicker2').val()));
if(datediff != 21) { alert("These dates are not 21 days apart"); }
return false;
}
</script>
答案 1 :(得分:0)
这一行
var y = document.getElementById('expected_start_date').value == "";
对我来说很可疑。它将y设置为1或0,具体取决于是否设置了预期的开始日期,但从您的问题看来,您真正想要的是
var y = document.getElementById('expected_start_date').value;
答案 2 :(得分:0)
您需要将日期实例化为Date对象。例如,
var x = new Date(Date.now());
这会设置一个包含当前日期和时间的日期。我建议您在developer.Mozilla.com上查找JavaScript参考资料以了解详情。