我有两个datepicker输入,我试图在第一个选择日期后自动打开第二个。截至目前,日期框打开然后立即关闭。我可以在没有关闭日期框的knockout.js viewmodel之外做得很好,但问题是我希望第二个日期框只有在第一个日期框有一个有效日期时才能打开。
如上所述,这在我的viewmodel之外工作得很好,但它没有考虑到开始日期的任何错误。
$("#start_date_input").datepicker('option',"onClose", function() {
$( "#start_date_input" ).datepicker( "show" );
});
这是我想要触发第二个日期选择器的地方
self.startDate.subscribe(function(){
var startDateErrors = ko.validation.group(self.startDateValidation);
var endDateErrors = ko.validation.group(self.endDateValidation);
if(startDateErrors().length == 0 && endDateErrors().length == 0){
populateList();
}
else if(startDateErrors().length == 0){ //if a valid start date is selected, show the end date
$("#end_date_input").datepicker("show");
}
});
一旦我选择开始日期,结束日期选择器就会显示并立即消失。光标仍在结束日期输入框中并闪烁。知道是什么导致它关闭吗?
我尝试添加$("end_date_input").datepicker({autoclose: false});
,但没有做任何事情。
答案 0 :(得分:2)
不要到达视图模型周围并直接调整DOM。您需要为datepicker提供自定义绑定处理程序。有一个here似乎非常受欢迎。这本身可能无法解决您的问题,但它会让您更好地控制正在发生的事情。
我怀疑(但不知道)在关联的输入字段上有hasFocus
binding会正确显示日期选择器。