2015-05-07 5 views
0

Я искал сеть, и я не могу найти какой-либо свет для этой проблемы. Вот мой фрагмент.Datepicker onClose событие не срабатывает при использовании в качестве редактора backgrid

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: отредактировал модель backgrid cell. Но мне кажется, что я что-то упустил. Событие onClose никогда не вызывается, и на консоли не отображается ошибка. Я также пробовал событие onSelect, но с тем же результатом.

Заранее спасибо

+0

Что DatePicker это? 'viewMode' и' autoclose' выглядят как опции bootstrap, но 'onClose' является опцией jqueryui – blgt

+0

Своей загрузкой datepicker. Я забыл об этом. Спасибо за головы. – manoyanx

ответ

0

Как уже упоминалось в комментариях:

Это самозагрузки DatePicker, поэтому 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

+0

Большое вам спасибо за помощь. Теперь это срабатывает. По-прежнему существует проблема с выбранной датой, поскольку она всегда показывает январь 1970 года. – manoyanx

+0

Большое вам спасибо :) – manoyanx