Kendo ui 在剑道网格中的弹出式编辑表单的第一个字段上设置焦点

Kendo ui 在剑道网格中的弹出式编辑表单的第一个字段上设置焦点,kendo-ui,Kendo Ui,我有一个剑道网格在弹出编辑模式。弹出表单的第一个字段是自动完成小部件。每当弹出窗体弹出时,我都要关注它。我试着用不同的方式来做 $("#grid").kendoGrid({ editor: function(container, options) { $('<input id="item_code_focus" name="' + options.field + '"/>') .appendTo(c

我有一个剑道网格在弹出编辑模式。弹出表单的第一个字段是自动完成小部件。每当弹出窗体弹出时,我都要关注它。我试着用不同的方式来做

$("#grid").kendoGrid({ 
    editor: 
        function(container, options) { 
            $('<input id="item_code_focus" name="' + options.field + '"/>')
                .appendTo(container)
                .kendoAutoComplete({ 
                    -----
                    -----
            }).focus()
        }
});
$(“#网格”).kendoGrid({
编辑:
函数(容器、选项){
$('')
.appendTo(容器)
.kendoAutoComplete({
-----
-----
}).focus()
}
});

但它不起作用。请帮助我?..

您可以尝试使用网格的事件

    edit:function(e){   
         e.container.data('kendoWindow').bind('activate',function(e){
            $('#autocomplete').focus();
         })

    },

编辑:实际上你应该使用窗口激活事件来调用焦点。这是@OnaBai在使用编辑时调用focus不会使输入失去焦点-实际上是动画导致了这种行为。

我认为,如果在弹出窗口仍处于打开状态时设置
focus
,则会失去焦点。你试过了吗?我认为您需要设置超时,然后设置
焦点。类似于
setTimeout(function(){$(“#item_code_focus”,ev.container).focus();},1000)弹出窗口上的
激活
事件,这不应该是显示的代码,而不是对JSBin的引用吗?我正要编辑你的答案,但我更希望你这样做,因为这是你的答案。实际上,考虑到这个解决方案,从实时系统中我看到了一个问题:窗口是在开始执行
edit
处理程序之前创建的,但在
edit
开始执行之前,我们不会绑定
activate
。从理论上讲,如果出于某种原因,在进入
bind
之前,activate结束打开,我们可能会错过它。因为动画非常慢,所以不应该发生,但是经验告诉我们,如果某些事情可能出错,那么就会出错!无论如何+1