嗨,大家. 我有一个表格,用户从JavaScript样式日历中选择一个日期,它将日期放入格式DD/mm/yyyy的字段中. 我希望表格可以将此用户选择的日期与将要处理的日期进行比较,这是今天的日期7天. 原因是,该字段是表单上的"要求"字段,我不希望用户在过去的日期或从今天起少于7天的日期输入日期. 因此,它将从今天起7天的日期输入日期. 我有逻辑权利(我认为),并在此处包括在这里,但是在大会的日期中,这一天或更高的日期似乎可以旅行! 有任何想法吗???
- <script>
- function checkadate(){
-
- //This bit gets todays date and add seven days
- var currentdate = new Date();
- currentdate.setDate(currentdate.getDate()+7);
- var day = currentdate.getDate();
- var month = currentdate.getMonth() + 1;
- var year = currentdate.getFullYear();
-
- //This bit puts that date in to dd/mm/yyyy format
- var todat = (day + "/" + month + "/" + year)
-
- alert("Todays date plus 7 is " +todat);
-
- //This is the date entered by the user.
- var ReqDate = document.getElementById("DateRequired").value;
-
- alert("Selected date is " + ReqDate);
-
- var SDate = (todat);
- var EDate = document.getElementById("DateRequired").value;
- var endDate = new Date(EDate);
- var startDate= new Date(SDate);
-
-
- if(startDate > endDate){
- alert("Date must be at least 5 working days in advance to allow for processing.\nThe earliest date available is " + SDate);
- document.getElementById("DateRequired").value = SDate;
- return false;
- }else{
- }
-
-
-
- }
- </script>
# 回答1 您已经将当前日期作为开始日期的日期对象. 使用用户输入的日期创建另一个日期对象,然后比较两者.
# 回答2 赦免我的无知,但我不太关注......../
# 回答3 在第5-6行上,您创建了一个日期对象并设置日期. 一行17,您具有结束日期的日期值. 使用str.split("/")分开字符串,以获取日期/月/年值的数组. 然后创建一个新的日期对象并使用 setlyear() 设置日期. 现在,您可以准备好两个日期对象进行比较.
# 回答4 同样,我可以看到逻辑,但是我的日期格式格式一定有问题,现在我在第三个警报框上 - 尝试在重新定位时将NAN放在第三个警报框上. 我已经修改并简化了脚本,上次杀死了,但它仍然没有解决. 凝固的getdate是否将其放入DD/mm/yyyy或美国格式中? 我从表格中带来的价值是在DD/mm/yyyy中,这会导致问题吗? 我包括了更新的代码. 谢谢...
- <script>
- function checkadate(){
-
- //Gets todays date and add seven days.
- var currentdate = new Date();
- currentdate.setDate(currentdate.getDate()+7);
- alert(currentdate);
-
-
- //Gets date entered
- var ReqDate = document.getElementById("DateRequired").value;
-
- //Splits date into an array
- var ReqArray=ReqDate.split("/");
- alert(ReqArray);
-
- var ReqDate = new Date();
- ReqDate.setFullYear(ReqArray);
- alert(ReqDate);
- //**Failing here**
-
-
- if(ReqDate > currentdate){
- alert("Date must be at least 5 working days in advance to allow for processing.\nThe earliest date available is " + SDate);
- document.getElementById("DateRequired").value = SDate;
- return false;}
-
- }
- </script>
# 回答5 单独使用数组值,并查看如何使用设置的固定性(带有三个参数).
- //Gets date entered
- var ReqDate = document.getElementById("DateRequired").value;
-
- //Splits date into an array
- var ReqArray=ReqDate.split("/");
-
- var ReqDate = new Date();
- ReqDate.setFullYear(ReqArray[2],ReqArray[1]-1,ReqArray[0]);
-
# 回答6 杰出的!! 使它起作用了,非常感谢您的XCellent像往常一样! 我已经发布了工作代码供将来使用的任何人使用,因为我花了很长时间才能完成反思是一项简单的任务. 正如您所看到的那样,JUT更改参数. 这个链接 有用(如果您还没有看过)和 随附的参考 . 无论如何,很高兴听到您已经有效.