编辑网格时,如果我在网格外单击,我编辑的框仍然可以编辑。当失去焦点时,如何让编辑过的单元格“完成”编辑?
答案 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。