2014-09-16 2 views
1

Следующий вид марионетки содержит таблицу, которая редактируется двойным щелчком по ячейке. Для этого я использовал slickgrid. Он отлично работает в chrome, но в IE9 этот вид никогда не замечает событие изменения («change .slick-cell.l1 input»). Если вы не дважды щелкните ячейку, чтобы изменить ее, нажмите кнопку «Сохранить». В chrome я могу дважды щелкнуть по ячейке, внести изменения и нажать Enter или щелкнуть где-нибудь вне ячейки, и это произойдет.событие изменения не активировано на входном элементе

DataContentView = Marionette.ItemView.extend({ 
    className: "ui-widget-content grid-container", 

    events: { 
     "change .slick-cell.l0 input": "changeDataKey", 
     "change .slick-cell.l1 input": "changeDataValue", 
     "click .ui-icon-trash": "removeData" 
    }, 

    changeDataValue: function(event){     
     var target = $(event.target), 
      key = target.closest(".slick-row").find(".l0").text(), 
      value = target.val(); 

     this.model.set(key, value, {silent:true}); 
    } 
} 

ответ

0

Использование различных событий, похоже, сработало для IE9. Я нашел то, что я думаю, может быть, лучшее решение. Внутри я использовал событие keyup для вызова функции changeDataValue. Это хорошо работало, за исключением случаев, когда нажата клавиша ввода или клавиша эвакуации. Slickgrid, кажется, прекращает распространение этих ключевых событий. Чтобы обойти эту пятновую сетку, есть свой набор событий. Поэтому я нашел подходящее событие onCellChange, вот код, который я использовал:

this.grid = new Slick.Grid();  

this.grid.onCellChange.subscribe(function(e,args){ 
    if(args.cell === 0){//cell in first column changed 
     this.changeDataKey(args.item.key, args.item.val); 
    } 
    else if(args.cell === 1){ 
     this.changeDataValue(args.item.key, args.item.val); 
    } 
}); 
1
"input .slick-cell.l0 input": "changeDataKey", 
// and similar to others 

попытка связать 'вход' событие, если ваша версия IE является> = 9 или 'propertychange' событие. Это может помочь.

+0

Можете привести пример? Вы имеете в виду, что в объекте my events на представлении позвоночника? Например, «изменить ввод»? – Timigen

+0

@Timigen просто заменит ваше событие «change» на «input» – aleha

Смежные вопросы