这是代码:
var MyModel = Backbone.Model.extend({
defaults: {std:"",
pod:""
}
});
var MyView = Backbone.View.extend({
tagName:'ul',
events: {
'change input' : 'changed', // When input changes, call changed.
'hover .std' : 'timepick', //
'mouseout .std': 'doesntwork'
},
template:_.template($('#mytemplate').html()),
initialize: function() {
this.model.bind('change:pod',this.render,this); // When pod changes, re-render
},
timepick: function(e) {
$('.std').each(function(){
$.datepicker.setDefaults({dateFormat:'mm-dd'});
$(this).datetimepicker({timeFormat:'hh:mm',ampm:false});
});
},
doesntwork: function() {
// Would this.model.set here but mouseout happens when you select date/time values with mouse
},
render: function() {
$(this.el).html(this.template(this.model.toJSON()));
return this;
},
changed: function(e) {
var value = $(e.currentTarget).val(); // Get Change value
var cls = $(e.currentTarget).attr('class'); //Get Class of changed input
var obj = {};
obj[cls] = value; // The model variables match class names
this.model.set(obj); // this.model.set({'std':value})
}
});
我正在处理的 UI 中有一个 datetimepicker,并且难以将从 datetimepicker 中选择的值分配给 MyModel。
从使用 console.log 输出来看,单击 DTP 时会触发“更改输入”并分配默认值 (MM-DD 00:00)。即使您选择了与默认值不同的日期/时间值,也不会再次触发“更改输入”,除非您单击输入框(第二次),然后分配正确的值。不是很人性化。
所以我的想法是我只在 mouseout 上分配值,这不起作用,因为当您开始选择日期/时间值时会发生 mouseout。我也试过模糊,但也没有用。
我哪里错了?
编辑:这是一个 jsfiddle.net 链接,说明了我的问题http://jsfiddle.net/9gSUe/1/