【发布时间】:2017-10-16 10:17:22
【问题描述】:
在我的 MVC 应用程序中,我有一个函数可以返回我的一个表中的最小和最大日期,我试图使用它们来限制用户可以在 JQuery DatePicker 中选择的日期范围。
该模型有两个 DateTime 类型的属性
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
public DateTime HalfHourlyStartDate { get; set; }
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
public DateTime HalfHourlyMinDate { get; set; }
这些是从数据库的后端代码中填充的。然后在页面中,我有两个像这样定义的隐藏字段
@Html.HiddenFor(x => x.HalfHourlyMinDate)
@Html.HiddenFor(x => x.HalfHourlyMaxDate)
然后在我的页面中,我有这段代码来设置日期选择器的最小和最大范围
$('.input-group.date').datepicker({
format: "dd/mm/yyyy",
todayBtn: true,
language: "en-GB",
forceParse: true,
autoclose: true,
calendarWeeks: true,
todayHighlight: true,
changeMonth: true,
changeYear: true
});
var minDate = new Date($('#HalfHourlyMinDate').val());
var maxDate = new Date($('#HalfHourlyMaxDate').val());
$('.input-group.date').datepicker("change", { minDate: minDate });
$('.input-group.date').datepicker("change", { maxDate: maxDate });
但它不起作用!当我运行我的应用程序时,日期选择器仍然允许无限制的日期选择。当我在这里出错时,谁能告诉我?
*** 我也试过这种方式,但也不管用
$('.input-group.date').datepicker('option', 'minDate', minDate);
$('.input-group.date').datepicker('option', 'maxDate', maxDate);
**更新
我添加了一个日期函数(在 stackoverflow 上找到),它从隐藏字段中的字符串值创建一个 javascript 日期对象,但它仍然无法工作。
var minDate = compareDate($('#HalfHourlyMinDate').val());
var maxDate = compareDate($('#HalfHourlyMaxDate').val());
function compareDate(str1) {
// str1 format should be dd/mm/yyyy. Separator can be anything e.g. / or -. It wont effect
var dt1 = parseInt(str1.substring(0, 2));
var mon1 = parseInt(str1.substring(3, 5));
var yr1 = parseInt(str1.substring(6, 10));
var date1 = new Date(yr1, mon1 - 1, dt1);
return date1;
}
**更新
好的,我现在试过了,但还是不行!有任何想法吗 ?这应该很简单:-)
var minDate = new Date(2017, 9, 9);
var maxDate = new Date(2017, 10, 9);
$(".input-group.date").datepicker({
format: "dd/mm/yyyy",
todayBtn: true,
language: "en-GB",
forceParse: true,
autoclose: true,
calendarWeeks: true,
todayHighlight: true,
changeMonth: true,
changeYear: true,
minDate: minDate,
maxDate: maxDate
});
【问题讨论】:
-
您使用的是什么版本的 jquery 和 jquery-ui?
-
JQuery v3.1.1 和 JQueryUI v1.12.1
-
老实说,我已经到了放弃它的地步,只是不值得为这个功能付出努力,而且我已经在这方面花费了太多时间。我正在创建有效的日期对象,因此日期选择器可能存在错误,并且无论如何它都不起作用。我真的很感谢你在这方面的帮助,所以谢谢你
-
好的,终于明白了,我使用的是引导版本,属性是 startDate 和 endDate,现在它可以工作了。虽然肯定有一个错误,因为虽然向前和向后的月份选择器仅显示超过 2 个月(这是我的日期范围),如果您单击箭头所在的位置(空间为空),它仍然会超过我的结束日期
标签: javascript jquery jquery-ui-datepicker