实时计数两个HTML日期输入字段之间的日期
Count dates between two HTML Date input fields real time
我正在做一个简单的申请,记录我办公室的内部休假。有了这个应用程序,我必须为用户提供两个HTML日期字段,用于选择开始休假日期和结束休假日期。同时,我需要计算在用户的选择之间有多少天,这个计数也可能排除工作日。要做到这一点,我尝试使用简单的javascript与日期字段onchange事件之一,但它不工作
这是我尝试过的完整的HTML代码
<html >
<head>
</head>
<body>
<form action='reqprocess.php' method='post'>
<td><input type="date" name="datepicker" class='form-control' id="startd" required/> <br>
<td><input type="date" name="datepicker2" class='form-control' id="endd"required /> <br>
<td><input type="text" name='leavehmd' class='form-control' id="lhmd"/><br>
<input type='submit' value='Apply' class='btn btn-primary' />
</form>
<script type="text/javascript">
var chng1 = document.getElementById("endd");
chng1.onchange = function () {
var date1 = Date.parse(document.getElementById("startd").value);
var date2 = Date.parse(document.getElementById("endd").value);
if (date1 && date2) {
var timeDiff = Math.abs(date2.getTime() - date1.getTime());
var diffDays = Math.ceil(timeDiff / (1000 * 3600 * 24));
//alert(diffDays);
document.getElementById("lhmd").value = diffDays;
}
}
var chng2 = document.getElementById("startd")
chng2.onchange = function () {
var date1 = Date.parse(document.getElementById("startd").value);
var date2 = Date.parse(document.getElementById("endd").value);
if (date1 && date2) {
var timeDiff = Math.abs(date2.getTime() - date1.getTime());
var diffDays = Math.ceil(timeDiff / (1000 * 3600 * 24));
//alert(diffDays);
document.getElementById("lhmd").value = diffDays;
}
}
</script>
</body>
</html>
但是当节的第二个日期,on-change函数不工作,输入字段假定填充计数日期未填充。如何解决这个问题?
或者如何通过ajax或jquery等方法实现
在尝试计算差值之前,需要确保每个输入字段中都有一个值
可以通过设置一个以值作为操作数的条件来检查这一点。如果没有值,它们的值为假,如果有值,它们的值为真。如果两个值都存在,则可以计算差值。
链接的重复问题有一个很好的干净的方法来计算日期之间的天数:
function parseDate(str) {
var mdy = str.split('/');
return new Date(mdy[2], mdy[0]-1, mdy[1]);
}
function daydiff(first, second) {
return Math.round((second-first)/(1000*60*60*24));
}
var chng1 = document.getElementById("endd");
var chng2 = document.getElementById("startd");
chng1.onchange = displayCurrentDayDifference();
chng2.onchange = displayCurrentDayDifference();
function displayCurrentDayDifference() {
var date1 = document.getElementById("startd").value;
var date2 = document.getElementById("endd").value;
if (date1 && date2) {
var daysBetween = daydiff(parseDate($('#startd').val()), parseDate($('#endd').val()));
document.getElementById("lhmd").value = daysBetween;
}
}
相关文章:
- 如何使用javascript在html中查找日期时间格式
- 更改html标记或其子标记(而不是其属性)文本中的日期格式
- 如何使文本、数字和日期html输入字段以一致的方式支持Ctrl+Z(撤消)
- 克隆 html - 日期选择器
- 无法将日期选取器应用于使用 .load 添加到应用程序的 html 页面上的字段
- 如何在创建动态 HTML 页面时使用日期选择器
- 正在侦听HTML日期输入的更改
- Javascript+HTML中的日期选择器准备好了吗?(需要:DD、MM、YY的单独字段加上日历选择器)
- 检查html日期是否为>现在
- 如何从html文本框中获取选定的日期是日期
- 如何使用Javascript从HTML中的日期字段捕获日期
- Powerbuilder/Javascript HTML数据窗口SetItem日期时间失败
- 按日期为iframe创建一个HTML链接
- HTML输入日期,响应所选值
- ASP.NET MVC 5@Html.EditorFor和javascript日期选择器
- 使用javascript for html显示特定时区的日期和时间
- 识别和替换 html 字符串中的格式化日期范围
- 如何通过Javascript编辑HTML中日期输入的值
- 在 HTML 字段中填写本地日期时间和时区名称
- Java脚本输入日期HTML格式