javascript - 用户提交日期后自动生成天数
问题描述
我尝试在按钮上使用 onclick 来计算两个日期之间的天数,并在文本框中生成它并且它可以工作。但是,我不确定当用户在"input type date"上输入日期时我该怎么做,它会自动计数并在textbox中生成天数。有什么想法吗?
我的 HTML
<td><b>Start Leave Date:</b></td>
<td> <input type="date" name="leave_start_date" id="leave_start_date" required></td>
</tr>
<tr>
<td><b>End Leave Date:</b></td>
<td> <input type="date" name="leave_end_date" id="leave_end_date" required onclick="noOfDays"></td>
</tr>
<tr>
<td> <b>No of Days:</b> </td> <td> <input type="text" name="noOfDays" id="noOfDays" readonly>Days <button type="button" name="button" onclick="countdays()">Count</button></td>
</tr>
<script type="text/javascript">
function countdays () {
var dateend = new Date (document.getElementById("leave_end_date").value);
var datestart = new Date (document.getElementById("leave_start_date").value);
var counttime = dateend.getTime() - datestart.getTime();
var countdays = counttime / (1000 * 3600 * 24);
document.getElementById("noOfDays").setAttribute("value",countdays);
}
</script>
解决方案
您可以使用侦听器来检测用户何时完成输入日期并尝试自动计算它!
请参阅:JSFiddle
<td><b>Start Leave Date:</b></td>
<td> <input type="date" name="leave_start_date" id="leave_start_date" required></td>
</tr>
<tr>
<td><b>End Leave Date:</b></td>
<td> <input type="date" name="leave_end_date" id="leave_end_date" required onclick="noOfDays"></td>
</tr>
<tr>
<td> <b>No of Days:</b> </td> <td> <input type="text" name="noOfDays" id="noOfDays" readonly>Days <button type="button" name="button" onclick="countdays()">Count</button></td>
</tr>
<script type="text/javascript">
var txtdateend = document.getElementById("leave_end_date");
var txtdatestart = document.getElementById("leave_start_date");
txtdateend.addEventListener("change", countdays);
txtdatestart.addEventListener("change", countdays);
function countdays () {
var dateend = new Date (document.getElementById("leave_end_date").value);
var datestart = new Date (document.getElementById("leave_start_date").value);
var counttime = dateend.getTime() - datestart.getTime();
var countdays = counttime / (1000 * 3600 * 24);
document.getElementById("noOfDays").setAttribute("value",countdays);
}
</script>
新的部分是:
var txtdateend = document.getElementById("leave_end_date");
var txtdatestart = document.getElementById("leave_start_date");
txtdateend.addEventListener("change", countdays);
txtdatestart.addEventListener("change", countdays);
你可以在listeners
这里查看:onchange 事件
推荐阅读
- ssl - HandshakeException:客户端中的握手错误 - Flutter http.dart 发布请求?
- android - RecyclerView 项的 Android 双向数据绑定
- angular - 类型“订阅”缺少以下属性
- python - AttributeError:“str”对象没有属性“shape”错误
- python - “超出纳秒时间戳”?你如何避免这个错误?
- data-structures - 如何找到所有子数组中所有可能的反转计数的总和?
- c++ - 我需要一些帮助来理解一些涉及 C++ 中的链表的代码
- motion - 如何使用两个摄像头提高物体姿态估计solvePnP的精度?
- java - Android Studio使用片段打开导航抽屉并处理后退按钮按下
- c++ - swap(int&, int&) 函数在不使用临时变量的情况下交换时不起作用?