我想创建一个非常简单的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>
...
提前感谢所有人的帮助和节日快乐。
此致 莱恩史密斯
答案 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以来经过的时间(以毫秒为单位)。
答案 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!');
}