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

标签 javascript jquery infragistics ignite-ui iggrid

我正在使用 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/

相关文章:

infragistics - iggridupdating - 在您键入时更新网格单元格值

ClickOnce 通过编程更新但不是框架更新因无效 list 错误而失败

javascript - 为什么我不能在 React 中通过 ref 获取元素

javascript - 如何在cakephp2中调用javascript函数?

javascript - 是否可以从 javascript 重新创建选择?

jquery - 使用数组数据的 jqgrid 示例,我缺少什么

Jquery UI 可拖动不滚动可排序容器

c# - Infragisitcs ultrawingrid 列选择器和列过滤器

php - 动态表的唯一ID

javascript - 替换克隆表行中链接的 onclick 参数