2013-03-19 54 views

回答

14

以下代码将保存当前编辑。

Slick.GlobalEditorLock.commitCurrentEdit(); 

你需要把它放在你认为应该触发保存的事件处理程序中。例如,如果您使用的示例文本编辑器插件,我相信一个editor-text CSS类添加到那个时候,您正在编辑一个细胞产生的输入字段,因此这样的事情应该工作:

$('#myGrid').on('blur', 'input.editor-text', function() { 
    Slick.GlobalEditorLock.commitCurrentEdit(); 
}); 
+0

我可能会错过这里的东西。从理论上讲,这是有效的 - 因为如果我将它添加到萤火虫控制台中,然后获得焦点并失去焦点,它就会一次起作用。但在代码中,即使在document.ready中,它也不起作用:\ – sunzyflower 2013-03-20 15:21:48

+0

我的错误是,模糊示例不起作用,因为输入字段是动态添加的。您需要使用'on'来绑定事件。我更新了这个例子,尝试一下。 – clav 2013-03-20 16:07:24

+0

我收到以下错误: 类型错误:。jQuery的(...)上不是一个函数 [打破这个错误] \t 的jQuery( '#myGrid')上( '模糊',“输入.editor-text',function(){ – sunzyflower 2013-03-20 20:06:13

6

我发现我需要换CLAV的处理程序超时:使用键盘导航时

Uncaught NotFoundError: An attempt was made to reference a Node in a context where it does not exist. 

$("#myGrid").on('blur', 'input.editor-text', function() { 

    window.setTimeout(function() { 

     if (Slick.GlobalEditorLock.isActive()) 
      Slick.GlobalEditorLock.commitCurrentEdit(); 

    }); 

}); 

,以避免类似的错误。据推测,新的模糊处理程序在SlickGrid可以执行自己的处理之前触发,这会导致问题。

4

不幸的是,可能是由于事件处理的不同,Grame的版本在chrome中打破了键盘导航。 为了解决这个问题,我又增加了支票只能提交编辑,如果新的焦点内容是不是在网格内其他编辑器元素(如键盘导航的结果):

  $('#grid').on('blur.editorFocusLost', 'input.editor-text', function() { 
       window.setTimeout(function() { 
        var focusedEditor = $("#grid :focus"); 
        if (focusedEditor.length == 0 && Slick.GlobalEditorLock.isActive()) { 
         Slick.GlobalEditorLock.commitCurrentEdit(); 
        } 
       }); 
      }); 

这似乎在当前工作Firefox,Chrome和IE等版本。