如何在提交之前比较两个日期时间类型的输入
how to compare two input of type datetime before submitting
我正在使用j2ee开发一个Web项目。 无论如何,在我的jsp页面中,我有一个表单,其中包含两个类型为datetime-local的输入,其中一个必须大于另一个,这就像验证开始和结束日期时间,所以我不知道如何在提交之前进行此测试。我在点击时在提交按钮中尝试了 javascript 代码,如果第二个日期的输入字段低于另一个,我试图将第二个日期的输入字段设为空,但它不起作用。谁能帮我?
我在JSP页面中的表单
<form id="tab" action="AjouterMCorr" method="GET">
<div class="form-group">
<label>Date Panne</label>
<input required type="datetime-local" name="datePanne" class="form-control">
</div>
<div class="form-group">
<label>Date Maintenance </label>
<input required type="datetime-local" name="dateMaint" class="form-control">
</div>
<div class="btn-toolbar list-toolbar">
<button onclick="
var dateMaint = new Date($('#dateMaint').val()); // or Date.parse(...)
var datePanne = new Date($('#datePanne').val()); // or Date.now()
if( dateMaint.getTime() < datePanne.getTime() )
{
document.getElementById('#dateMaint').value = '';
}
" type="submit" class="btn btn-primary"><i class="fa fa-save"></i> Save</button>
<input type="reset" class="btn btn-danger">
</div>
</form>
我最近一直在使用 Moment.js 库,它支持比较其文档页面上日期之间的差异。
例:
var start = moment($('dateMaint').val(), 'MM-DD-YYYY');
var end = moment($('datePanne').val(), 'MM-DD-YYYY');
if (end.isBefore(start)) { //stuff... }
在javascript中解析DateTimes时,你确实需要小心,因为浏览器并不总是以相同的方式解释时间。
你的javascript有几个小问题,阻止了你的表单验证正常工作。让我们回顾一下解决此问题的步骤,然后查看下面的jsfiddle链接以获取示例:
- 您的 jquery 选择器没有针对实际输入,因为您的日期输入没有您要定位的 id (#),因此我更改了选择器以按名称查找输入。
- 提交标记上的 onclick 属性应抽象为仅包含函数,实际逻辑应位于表单下方的附近脚本标记中。
- 现在它正在工作,并且由于您在日期输入上具有必需的属性(请记住是否支持 HTML5),因此您不必检查值是否存在,但您可以返回 false 以防止表单在 1 个值大于另一个值时提交。
.HTML
<form id="tab" action="AjouterMCorr" method="GET">
<div class="form-group">
<label>Date Panne</label>
<input required type="datetime-local" name="datePanne" class="form-control">
</div>
<div class="form-group">
<label>Date Maintenance </label>
<input required type="datetime-local" name="dateMaint" class="form-control">
</div>
<div class="btn-toolbar list-toolbar">
<button onclick="onSubmit()" type="submit" class="btn btn-primary"><i class="fa fa-save"></i> Save</button>
<input type="reset" class="btn btn-danger">
</div>
</form>
<script>
function onSubmit() {
var dateMaint = new Date($('input[name="dateMaint"]').val()); // or Date.parse(...)
var datePanne = new Date($('input[name="datePanne"]').val()); // or Date.now()
if (dateMaint.getTime() < datePanne.getTime()) {
return false;
console.log("test");
}
}
</script>
更新已将表单提交更改为表单元素,因为其他表单标签可能会触发表单上的提交。
这是jsfiddle。
相关文章:
- 如何在javascript中获取两个日期之间的周六和周日的日期
- 如何用moment.js列出两个日期之间的所有月份
- 两个日期时间选择器
- 如何在JavaScript中比较两个日期
- moment.js在两个时区格式的日期之间存在差异
- Javascript-如何使用bootstrap日期时间选择器自动计算两个时间输入之间的差异
- Javascript两个日期选择器冲突
- 如何从日期范围选择器中获取两个日期
- 用时间戳获取两个不同日期之间的时间差
- JavaScript函数,用于计算两个日期之间的年、月和天数
- 使用javascript将两个输入的日期添加在一起
- 再次使用JavaScript计算两个日期之间的天数
- Mongoose查询在两个日期时间之间提取数据
- 在Javascript中计算两个日期之间的工作日,节假日除外
- 在Jquery或Javascript中获取两个范围或日期之间的通信周数
- 两个日期之间的差异
- JavaScript-计算两个日期之间的天数(包括结束日期)
- 在 JavaScript 中单击函数时两个日期类型输入之间的差异的代码
- 如何将日期和时间拆分为两个元素
- 当前日期两个时间之间的时间