javascript - 从日期选择器获取日期未按预期工作
问题描述
当有人选择过去的日期时,我试图显示警报:
jQuery('#date').datepicker().change(evt => {
var selectedDate = jQuery('#date').datepicker('getDate');
var theSelectedDate = selectedDate.setHours(0,0,0,0);
var now = new Date();
var theNow = now.setHours(0,0,0,0);
if (theSelectedDate > theNow) {
// Date in in the future, all good
} else {
alert("Selected date is in the past");
}
});
..和日期字段...
<input type="date" id="date" name="date" />
问题是,无论我使用日期选择器选择了哪个日期,移动设备上的警报始终是“所选日期已过去”。
我到底做错了什么?
解决方案
我不确定您为什么不设置最小日期,以便用户无法选择过去的日期。
$(function() {
$("#date").datepicker({
minDate: "+1d"
});
});
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<link rel="stylesheet" href="/resources/demos/style.css">
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<p>Date: <input type="text" id="date"></p>
您可以使用0
今天或+1d
排除今天。
更新
对于原生 HTML5 日期选择器,您可以利用该min
属性。
您可以使用
min
和max
属性来限制用户可以选择的日期。
$(function() {
function nowStr() {
var dt = new Date();
var yy = dt.getFullYear();
var m = (dt.getMonth() + 1);
m = m < 10 ? "0" + m : m;
var d = dt.getDate();
d = d < 10 ? "0" + d : d;
var s = yy + "-" + m + "-" + d;
return s;
}
$("#date").attr("min", nowStr());
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="date" id="date" name="date" min="2019-01-01" />
推荐阅读
- reactjs - 将 React 组件库构建到 CDN 而不是 NPM
- spring-kafka - RetryingBatchErrorHandler - 偏移提交处理
- wso2 - 如何将硬编码端口更改为 deployement.toml 中的环境名称?
- c - 在C中连接字符串和数字
- c - 为什么使用“rank[0] - rank[1]”来更新要插入redis的节点的跨度skiplist“zslInsert”
- javascript - 将 socket.io Javascript 代码转换为 python-socketio
- git - 为什么无法在 github 上推送 git local repo?
- html - 更改选择离子角度的输入控制
- javascript - 如何修复,无法对未安装的组件执行 React 状态更新?
- javascript - 如何获取数据集标签图表JS