所以我似乎发现了一个问题,我不确定这是否是jQuery错误或者它是不可能的,但如果有人管理了这个,他们可以告诉我如何。
我有一个日期选择器,我不想让用户选择过去的日期。
var d = new Date($(this).val());
var nowDate = new Date();
var nowDateParse = ""+
nowDate.getFullYear()+
(nowDate.getMonth()+1 < 10? "0"+(nowDate.getMonth()+1): (nowDate.getMonth()+1))+
(nowDate.getDate()+1 < 10? "0"+(nowDate.getDate()+1): (nowDate.getDate()+1));
var selDate = ""+
d.getFullYear()+
(d.getMonth()+1 < 10? "0"+(d.getMonth()+1): (d.getMonth()+1))+
(d.getDate()+1 < 10? "0"+(d.getDate()+1): (d.getDate()+1));
if(parseInt(nowDateParse) > parseInt(selDate)){
alert("You can only select dates in the future!");
$("#searchDate").attr("value", ""+
nowDate.getFullYear()+"-"
(nowDate.getMonth()+1 < 10? "0"+(nowDate.getMonth()+1): (nowDate.getMonth()+1))+"-"+
(nowDate.getDate()+1 < 10? "0"+(nowDate.getDate()+1): (nowDate.getDate()+1))
)
return false;
}
你可以看到我已经累了$("#searchDate").attr("value"
以及$("#searchDate").val(
,但两者似乎都会导致同样的问题。
所以日期从当前日期开始:2016年6月27日(英国格式:2016-06-27)
如果用户选择E.G 26/06/2016之前的日期(英国格式:2016-06-26)
它显示警告但未能将日期更改回今天的日期。
我不反对在没有jQuery调用的情况下使用标准Javascript,如果需要的话。
备注:::
作为一个注释,这段代码看起来相当复杂,因为它正在进行日期比较而不是日期时间比较,因为Javascript的Date
对象是日期时间而不仅仅是日期
答案 0 :(得分:1)
在控制日期有效性后添加此内容:
var dToday = new Date();
var day = ("0" + dToday.getDate()).slice(-2);
var month = ("0" + (dToday.getMonth()+1)).slice(-2);
today = dToday.getFullYear() + "-" + month + "-" + day;
$("#searchDate").val(today);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input type="date" id="searchDate">
答案 1 :(得分:0)
初始化datepickers时,您必须创建一个新的日期对象并将其设置为minDate
<label for="from">From</label> <input type="text" id="from" name="from"/> <label for="to">to</label> <input type="text" id="to" name="to"/>
var dateToday = new Date();
var dates = $("#from, #to").datepicker({
defaultDate: "+1w",
changeMonth: true,
numberOfMonths: 3,
minDate: dateToday,
onSelect: function(selectedDate) {
var option = this.id == "from" ? "minDate" : "maxDate",
instance = $(this).data("datepicker"),
date = $.datepicker.parseDate(instance.settings.dateFormat || $.datepicker._defaults.dateFormat, selectedDate, instance.settings);
dates.not(this).datepicker("option", option, date);
}
});