JavaScript警报,如果两个日期相距不远

时间:2014-07-23 18:51:59

标签: javascript html

我一直在尝试编写一个找到两个日期差异的函数,如果这两个日期不是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>

`

3 个答案:

答案 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参考资料以了解详情。