gpt4 book ai didi

javascript - 如何在 iggridupdating 编辑器焦点上打开 jquery 对话框

转载 作者:行者123 更新时间:2023-11-30 17:44:35 26 4
gpt4 key购买 nike

我正在使用 Ignite UI 网格。当特定编辑器专注于新行插入或更新时,我必须打开一个对话框。编辑模式为“行”。

我能够打开对话框,为此我正在使用 editCellStarted 事件并将编辑器绑定(bind)到焦点事件。代码如下:

             $("#Grid").igGrid({
primaryKey: "keyCode",
autoCommit: true,
columns: _getColumnsResult,
features: [
{
name: 'Updating',
columnSettings: updateColSettings,
editMode: 'row',
editCellStarted: function (evt, ui) {
if(ui.columnKey=="Demo")
{
$("#" + ui.columnkey + " input").bind('focus', { id: ui.columnIndex}, function (e) {
$("dialog1").dialog();
});
}
},
}, //Updating feature ended
{
name: "Sorting",
type: "local",
},
{
name: "Selection",
mode: "row",
rowSelectionChanged: function (evt, ui) { Selectedrow = ui.row.index }
}]
});

问题:单击添加新时,如果该特定列是第一列,焦点将转到对话框并返回到编辑器。焦点不会留在对话框中。

但如果该列不是第一列,则代码可以正常工作。

请帮助完成此任务。提前致谢。

这里是 fiddle

最佳答案

我不能在这里测试,如果你能提供一个 jsFiddle 作为例子就好了,但可能是其他东西绑定(bind)到那个将焦点返回到行的事件,你可以尝试更改代码要添加的 if 子句:

$("#" + ui.columnkey + " input").bind('focus', { id: ui.columnIndex}, function (e) {                                          
e.stopPropagation();
$("dialog1").dialog();
});

停止触发任何其他处理程序的焦点事件。

否则,您将不得不弄清楚是什么导致焦点返回到该行。

编辑

好吧,看起来焦点实际上首先到达那里(在对话框事件触发之前),不确定对话框为什么不保持焦点——也许它是异步的并且那里存在时间问题,但你可以修复它只是通过强制焦点到对话框。我在您的输入中添加了一个 ID,然后在事件处理程序中使用了它:

$("#" + ui.columnKey + " input").bind('focus', function (e) {
$("#dialog").dialog();
$("#dia_inputbox").focus();
});

工作 fiddle here

此外,我还以为您不需要绑定(bind)到 focus,而是直接在 editCellStarted 的处理程序中弹出对话框——这可行,但您无法将焦点移回,如果您停止传播,则单元格无法正确编辑。我还尝试使用 editCellStarting。上面的解决方案有效,但感觉有点像 hack,应该有一种方法可以更干净地做到这一点,但我不确定它是什么。

关于javascript - 如何在 iggridupdating 编辑器焦点上打开 jquery 对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20371992/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com