Datepicker onClose 事件在用作背景网格编辑器时未触发
Datepicker onClose event not firing when used as a backgrid editor
我已经在网上搜索过了,但我找不到任何解决这个问题的方法。这是我的片段。
Backgrid.CustomDateCell = Backgrid.DateCell.extend({
editor: Backgrid.InputCellEditor.extend({
attributes: {
type: "text"
},
events: {},
initialize: function(){
Backgrid.InputCellEditor.prototype.initialize.apply(this, arguments);
var _input = this;
$(this.el).prop('readonly', true);
$(this.el).datepicker({
autoclose: true,
todayHighlight: true,
format: "mm/dd/yyyy",
viewMode: "months",
minViewMode: "months",
onClose: function(dateText, inst){
var command = new Backgrid.Command({});
_input.model.set(_input.column.get("name"), dateText);
_input.model.trigger("backgrid:edited", _input.model, _input.column, command);
command = _input = null;
}
});
}
})
});
所以基本上,我想要的是触发背景网格单元模型的 backgrid:edited。但似乎我在这里遗漏了一些东西。 onClose 事件永远不会被调用,控制台中也不会显示任何错误。我也尝试了 onSelect 事件,但结果相同。
提前致谢
如评论中所述:
这是一个 bootstrap 日期选择器,因此 onClose
不是一个有效的选项。改为将侦听器附加到 hide
事件:
$(this.el).datepicker({
autoclose: true,
todayHighlight: true,
format: "mm/dd/yyyy",
viewMode: "months",
minViewMode: "months"
});
$(this.el).on("hide", function(e) {
var command = new Backgrid.Command({});
_input.model.set(_input.column.get("name"), e.date);
_input.model.trigger("backgrid:edited", _input.model, _input.column, command);
command = _input = null;
});
e.date
应该相当于 dateText
我已经在网上搜索过了,但我找不到任何解决这个问题的方法。这是我的片段。
Backgrid.CustomDateCell = Backgrid.DateCell.extend({
editor: Backgrid.InputCellEditor.extend({
attributes: {
type: "text"
},
events: {},
initialize: function(){
Backgrid.InputCellEditor.prototype.initialize.apply(this, arguments);
var _input = this;
$(this.el).prop('readonly', true);
$(this.el).datepicker({
autoclose: true,
todayHighlight: true,
format: "mm/dd/yyyy",
viewMode: "months",
minViewMode: "months",
onClose: function(dateText, inst){
var command = new Backgrid.Command({});
_input.model.set(_input.column.get("name"), dateText);
_input.model.trigger("backgrid:edited", _input.model, _input.column, command);
command = _input = null;
}
});
}
})
});
所以基本上,我想要的是触发背景网格单元模型的 backgrid:edited。但似乎我在这里遗漏了一些东西。 onClose 事件永远不会被调用,控制台中也不会显示任何错误。我也尝试了 onSelect 事件,但结果相同。
提前致谢
如评论中所述:
这是一个 bootstrap 日期选择器,因此 onClose
不是一个有效的选项。改为将侦听器附加到 hide
事件:
$(this.el).datepicker({
autoclose: true,
todayHighlight: true,
format: "mm/dd/yyyy",
viewMode: "months",
minViewMode: "months"
});
$(this.el).on("hide", function(e) {
var command = new Backgrid.Command({});
_input.model.set(_input.column.get("name"), e.date);
_input.model.trigger("backgrid:edited", _input.model, _input.column, command);
command = _input = null;
});
e.date
应该相当于 dateText