最近在公司修改项目的时候遇到一个需求,要让实现了Datetimepicker控件的时间输入框不能让用户改时间。当时一想把文本框直接设置为只读不就行了吗,结果一运行发现时间控件也变灰色不能选择了,尴了个尬。没办法,只能求百度或者扣脑壳了呗。
结果呢.....当然实现啦!上图:
解决方案:
1、设置输入框为只读(readonly)。
2、在初始化时间控件的时候添加 onGenerate事件去改变控件面板的不可用样式。
$(startDateTimeId).datetimepicker({
format: 'Y-m-d H:i:s',
minDate: 0,
onGenerate:function(){
$(this).find('.xdsoft_date').toggleClass('xdsoft_disabled');
$(this).find('.xdsoft_time').toggleClass('xdsoft_disabled');
}
});
3、当我们选择时间了,记得要把样式还原回去,不然下次打开不可选。在结尾处添加一个关闭事件处理样式还原的代码
$(startDateTimeId).datetimepicker({
format: 'Y-m-d H:i:s',
minDate: 0,
onGenerate:function(){
$(this).find('.xdsoft_date').toggleClass('xdsoft_disabled');
$(this).find('.xdsoft_time').toggleClass('xdsoft_disabled');
},
onChangeDateTime: function (dp, $input) {
startDate = $(startDateTimeId).val();
},
onClose: function (current_time, $input) {
if (startDate > endDate) {
$(startDateTimeId).val(endDate);
startDate = endDate;
}
$(this).find('.xdsoft_date').toggleClass('xdsoft_disabled');
$(this).find('.xdsoft_time').toggleClass('xdsoft_disabled');
}
});
注意:datetimepicker的面板分为两个选项模块 date和time
所以要改变样式的时候要找xdsoft_date和xdsoft_time两个样式。