2013-08-07 146 views
1

上操作datePicker CSS我试图根据其他小部件(复选框和数字文本框)启用/禁用日期选择器。当我尝试使用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

我忘了提及使用剑道与MVC,但无论如何,我从他们的论坛得到了答案: Kendo UI小部件不初始化时触发事件,但你可以指望他们的存在,如果你包括你的自定义document.ready处理程序中的逻辑,它被添加在页面末尾。这将确保处理程序将在所有窗口小部件初始化语句之后执行,这也取决于document.ready。在这种情况下不需要setTimeout。 谢谢大家! –

回答

1

我忘了提及即时通讯使用剑道w ith MVC,但无论如何,我从他们的论坛上得到了答案:

Kendo UI小部件在初始化时不会触发事件,但如果将自定义逻辑包含在document.ready处理程序中,则可以指望它们的存在,它被添加在页面的末尾。这将确保处理程序将在所有窗口小部件初始化语句之后执行,这也取决于document.ready。在这种情况下不需要setTimeout。

某些窗口小部件(如Grid或ListView)可以初始化,但仍未填充到document.ready中。根据确切的场景,您可以使用相应的小部件的dataBound事件来执行自定义逻辑。

谢谢大家!

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

+0

忘了提及我使用MVC和我的脚本之前创建datepicker,这是问题的HTML帮助器。 –

相关问题