これはコードです:
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) のデフォルト値が割り当てられることがわかります。デフォルトとは異なる日付/時刻の値を選択した場合でも、入力ボックスを (2 回目) クリックしない限り、「入力の変更」は再度トリガーされず、正しい値が割り当てられます。あまりユーザーフレンドリーではありません。
そのため、マウスアウトで値を割り当てるだけでよいという考えがありましたが、日付/時刻の値を選択し始めるとマウスアウトが発生するため、うまくいきませんでした。ぼかしも試しましたが、うまくいきませんでした。
どこが間違っていますか?
編集:これは私の問題を説明するjsfiddle.netリンクですhttp://jsfiddle.net/9gSUe/1/