javascript - 如何在两个日期输入中具有相同的年份?
问题描述
我有两个日期输入“ from
”和“ To
”我希望输入中的年份在两个日期中都相同
例子 :
如果用户在“from”输入中选择“11/03/ 2017 ”,他可以在“to”输入中选择直到“31/12/ 2017 ”
如果用户在“from”输入中选择“06/07/ 2014 ”,他可以在“to”输入中选择直到“31/12/ 2014 ”
(年份不得超过或早于已选择的年份)
如果用户尝试选择第一个输入中不存在的另一个年份,我们会显示一些警告消息。
$("#from").on("change", function() {
validateYear();
var from = $("#from").val();
if (from) {
var maxYear = new Date(from).getFullYear();
$("#to").attr("max", maxYear+"-12-31");
$("#to").attr("min", maxYear+"-01-01");
}
});
$("#to").on("change", function(){
validateYear();
});
function validateYear() {
var from = $("#from").val();
var to = $("#to").val();
if(from && to && new Date(from).getFullYear() != new Date(to).getFullYear()) {
$("#to").val("");
alert("error");
}
}
.from, .to {
padding:20px;
text-transform:uppercase;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<span class="from">From</span>
<input id="from" type="date">
<span class="to">To</span>
<input id="to" type="date">
解决方案
一个基本的逻辑是:
$("#from").on("change", function() {
validateYear();
var from = $("#from").val();
if (from) {
var maxYear = new Date(from).getFullYear();
$("#to").attr("max", maxYear+"-12-31");
$("#to").attr("min", maxYear+"-01-01");
}
});
$("#to").on("change", function(){
validateYear();
});
function validateYear() {
var from = $("#from").val();
var to = $("#to").val();
if(from && to && new Date(from).getFullYear() != new Date(to).getFullYear()) {
$("#to").val("");
alert("error");
}
}
推荐阅读
- javascript - 单击另一个父菜单的子菜单时关闭上一个父菜单(但两个父菜单都应该能够保持打开状态)
- bash - 管道传输到另一个程序时未保留变量值
- spring-boot - 如何使用 Spring Security 检索 CAS 服务器发送的属性和用户名
- bash - Helm 安装失败并出现错误:无法从 Azure Cloud Shell 中找到分蘖
- php - 在一张表中显示多维数组中的数据
- javascript - 访问对象标签内网页上的 JS
- powershell - Powershell 读取文本文件并提取 2 个值 ComputerName & ProductName
- ag-grid - 您如何设计/修改标题组件的拖动元素?
- python - 从 pandas df 中选择并计算特定值
- r - 在 R desolve 中设置导数的下限