Javascript日期时间验证 - yyyy-mm-dd hh:mm

时间:2011-12-21 08:03:18

标签: javascript validation datetime

我想创建一个非常简单的javascript表单验证。我有两个输入框,由日期时间选择器填充。日期时间选择器以2011-12-21 09:58的格式填充输入框。我有一个收集日期和到货日期的输入框。

我想确认' deliverdatetime'输入的内容大于' collectdatetime'。

验证失败的输出应该只是在一个弹出窗口中说“发送”#39;之前' coolectdate'。

这可以通过javascript完成吗?若有,有人可以给我一个简短的例子吗?

我的基本html表单代码是:

...
<td>
<input type="text" id="collectdatetime" name="collectdatetime">
</td>
<td>
<input type="text" id="deliverdatetime" name="deliverdatetime" >
</td>
...

提前感谢所有人的帮助和节日快乐。

此致 莱恩史密斯

3 个答案:

答案 0 :(得分:1)

你可以这样做:

var collectTime = (new Date(document.getElementById("collectdatetime").value)).getTime(),
    deliverTime = (new Date(document.getElementById("deliverdatetime").value)).getTime();
if(deliverTime > collectTime) {
    //Ok!
}

这会创建2个Date个对象,将选定的值传递给构造函数,然后比较时间。 getTime方法返回一个数字,表示自1970年1月1日00:00:00以来经过的时间(以毫秒为单位)。

这是working example

答案 1 :(得分:1)

对于日期/时间字符串的ISO8601格式,您可以将这些值作为字符串进行比较。这是使用ISO8601格式的美女之一。您已经要求交货时间在收集时间之后,这对我来说似乎是倒退但无论如何......

<form onsubmit="return checkDates(this)">
  <table>
    <tr>
      <td>
        <input type="text" id="collectdatetime" name="collectdatetime">
      <td>
        <input type="text" id="deliverdatetime" name="deliverdatetime">
      <td>
        <input type="submit">
  </table>
</form>

<script>
function checkDates(form) {
  if (form.collectdatetime.value >= form.deliverdatetime.value) {
    alert('Collection time must be after deliver time');
    return false;
  }
}
</script>

答案 2 :(得分:0)

您可以从此值创建Date对象并进行比较:

var collect = new Date($('#collectdatetime').val());
var delivery = new Date($('#deliverdatetime').val());

if (delivery < collect) {
    alert('Delivery date before collect!');
}