实时计算两个 HTML 日期输入字段之间的日期
Count dates between two HTML Date input fields real time
我正在为我办公室的内部休假记录做一个简单的申请。对于此应用程序,我必须向用户提供 HTML 开始休假日期和结束休假日期的两个 HTML 日期字段。同时我需要计算用户 selection 之间有多少天,这个计数可能不包括工作日。为此,我尝试将简单的 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
等方法实现此目的
在尝试计算差值之前,您需要确保每个输入字段中都有一个值
您可以通过设置一个以值作为操作数的条件来检查这一点。如果没有价值,他们将评估为 falsy,如果有价值,他们将评估为 truthy。如果两个值都存在,则可以计算差值。
链接的重复问题有一个很好的干净的方法来计算日期之间的天数:
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;
}
}
我正在为我办公室的内部休假记录做一个简单的申请。对于此应用程序,我必须向用户提供 HTML 开始休假日期和结束休假日期的两个 HTML 日期字段。同时我需要计算用户 selection 之间有多少天,这个计数可能不包括工作日。为此,我尝试将简单的 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
等方法实现此目的在尝试计算差值之前,您需要确保每个输入字段中都有一个值
您可以通过设置一个以值作为操作数的条件来检查这一点。如果没有价值,他们将评估为 falsy,如果有价值,他们将评估为 truthy。如果两个值都存在,则可以计算差值。
链接的重复问题有一个很好的干净的方法来计算日期之间的天数:
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;
}
}