我正在尝试使用jquery在开始日期和结束日期控件上创建日期功能。我想选择开始日期,当到达开始日期之前的结束日期时,上一个日期将作为禁用我的代码在下面。
$( "#" + TxtStrtDate,"#" + TxtExpDte" ).datepicker({
defaultDate: "+1w",
changeMonth: true,
numberOfMonths: 3,
onSelect: function( selectedDate ) {
var option = this.id == "abc" ? "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 );
}
});
我的代码中有什么错误请建议。
答案 0 :(得分:2)
假设TxtStrtDate
和TxtExpDte
是变量,您引用元素的方式无效。
更新:
$("#"+TxtStrtDate+", #"+TxtExpDte).datepicker({
...
});
带有建议代码的This Fiddle工作正常!
带有当前代码的This Fiddle证明它不起作用!
如果它们实际上是元素ID,请使用:
$("#TxtStrtDate, #TxtExpDte").datepicker({
...
});
请参阅此working Fiddle示例!
答案 1 :(得分:2)
由于您提到这些是服务器控件,我假设您使用的是ASP.NET。如果是这种情况并且您正在使用MasterPages,则MasterPages会破坏控件的ID,因此您必须执行以下操作:
$('#<%= TxtStrtDate.ClientID %>, #<%= TxtExpDte.ClientID %>').datepicker({
...
});
否则,你的选择器中有一个额外的“你的id需要在引号内,除非它们实际上是javascript变量:
$( "#" + TxtStrtDate,"#" + TxtExpDte" )
应更改为:
$("#TxtStrtDate, #TxtExpDte")
// or if they are javascript variables
$("#" + TxtStrtDate + ", #" + TxtExpDte)
修改强>:
根据您的评论,您似乎想要使用jquery datepicker的日期范围版本。为此,您必须执行以下操作:
$( "#TxtStrtDate" ).datepicker({
defaultDate: "+1w",
changeMonth: true,
numberOfMonths: 3,
onSelect: function( selectedDate ) {
$( "#TxtExpDte" ).datepicker( "option", "minDate", selectedDate );
}
});
$( "#TxtExpDte" ).datepicker({
defaultDate: "+1w",
changeMonth: true,
numberOfMonths: 3,
onSelect: function( selectedDate ) {
$( "#TxtStrtDate" ).datepicker( "option", "maxDate", selectedDate );
}
});
查看jquery ui网站上的date range demo以获取更多信息。