Slickgrid - 失去焦点以结束编辑

时间:2013-03-19 21:54:18

标签: slickgrid lost-focus

编辑网格时,如果我在网格外单击,我编辑的框仍然可以编辑。当失去焦点时,如何让编辑过的单元格“完成”编辑?

3 个答案:

答案 0 :(得分:15)

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

Slick.GlobalEditorLock.commitCurrentEdit();

您需要将其置于您认为应该触发保存的事件处理程序中。例如,如果您正在使用示例文本编辑器插件,我相信在您编辑单元格时创建的输入字段中会添加editor-text CSS类,因此这样的内容应该有效:

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

答案 1 :(得分:6)

我发现我需要在超时中包装clav的处理程序:

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

    window.setTimeout(function() {

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

    });

});

以避免错误:

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

使用键盘导航时。据推测,新的模糊处理程序会在SlickGrid执行自己的处理之前触发,这会导致问题。

答案 2 :(得分:5)

不幸的是,可能由于事件处理的不同,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。

相关问题