我正在尝试根据其他小部件(复选框和数字文本框)启用/禁用日期选择器。当我尝试使用true或false作为参数调用DatePicker.enable()时,我收到一个错误,因为DatePicker还没有准备好。看起来像Kendo小部件直到$(document).ready也没准备好。是否有任何事件或事情可以告诉我日期选择器何时可以被操纵?现在我正在使用一个感觉非常错误的setTimeout。
以下是我的代码示例。
$(document).ready(function () {
ChangeDatePickersState();
});
function ChangeDatePickersState() {
var input = $('#MyCheckbox:checked')
var bool = input.length != 0 ? true : false;
EnableDatePickerForCheckbox('MyDatePicker', bool);
function EnableDatePickerForCheckbox(inputName, inputValue) {
var datePicker = $('#' + inputName).data("kendoDatePicker");
if (inputValue == true) {
datePicker.enable(true);
}
else {
datePicker.enable(false);
datePicker.value(null);
}
}
提前致谢。
答案 0 :(得分:1)
我忘了提到我使用剑道和MVC,但无论如何我从他们的论坛得到了答案:
Kendo UI小部件在初始化时不会触发事件,但如果将自定义逻辑包含在document.ready处理程序中,则可以指望它们存在,该处理程序在页面末尾添加。这将确保在所有窗口小部件初始化语句之后执行处理程序,这些语句也依赖于document.ready。在这种情况下,不需要setTimeout。
可以初始化某些小部件,例如Grid或ListView,但仍未在document.ready中填充。根据具体情况,您可以使用相应小部件的dataBound事件来执行自定义逻辑。
谢谢大家!
答案 1 :(得分:0)
一旦调用
,DatePicker就可以随时修改了$("#MyDatePicker").kendoDatePicker();
我在这里发布的JS代码中进行了以下更改,并且它有效
$(document).ready(function () {
$("#MyDatePicker").kendoDatePicker();
ChangeDatePickersState();
});
有关详细信息,请参阅这些链接 http://demos.kendoui.com/web/datepicker/api.html Disabling kendo datepicker when clicked on checkbox