【问题标题】:KendoUI Grid - Select text on cell focusKendo UI Grid - 在单元格焦点上选择文本
【发布时间】:2013-07-29 21:14:23
【问题描述】:

单元格内容选择适用于数字文本框(内部作为 Kendo NumericTextBox 控件处理),但由于某种原因,它不适用于纯文本框列。附上这个问题的jsfiddle演示:

http://jsfiddle.net/latenightcoder/TrJVK/86

这是网格设置中重要的代码:

edit: function (e) {
        var input = e.container.find("input");
        input.focus(function (e) {
            console.log('focus');
            setTimeout(function () {
                input.select();
            });
        });
    }

【问题讨论】:

    标签: javascript kendo-ui kendo-grid


    【解决方案1】:

    事实证明,在我连接焦点事件处理程序之前,焦点事件就被触发了。所以这是支持网格行内所有类型字段的最佳解决方案:

            var input = e.container.find("input");
            setTimeout(function () {
                input.select();
            }, 25);
    

    修改后的jsfiddle可以看这里:http://jsfiddle.net/latenightcoder/TrJVK/90

    【讨论】:

    • 谢谢..为我工作。 :)
    【解决方案2】:

    您只是将焦点事件处理程序附加到它,但实际上并没有告诉它焦点。问题应该是,为什么剑道数框会这样做? :-) 此外,setTimeout 的第二个参数不是可选的(根据规范)。

    试试下面的 (http://jsfiddle.net/TrJVK/87/)

        edit: function (e) {
            var input = e.container.find("input");
            input.focus(function (e) {
                // var input = $(this);
                console.log('focus');
                input.select();
            });
            input.focus();
        },
    

    还有一点:

    为了将来的 jQuery 兼容性,最好还是执行以下操作:

        edit: function (e) {
            var input = e.container.find("input");
            input.on('focus', function (e) {
                // var input = $(this);
                console.log('focus');
                input.select();
            });
            input.trigger('focus');
        },
    

    【讨论】:

    • 焦点事件在内部触发,这就是它适用于 Kendo 数字文本框的原因。我认为问题在于,对于常规文本框,当焦点事件处理程序被连接时,焦点事件已经被触发。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-26
    • 1970-01-01
    • 2013-06-05
    • 1970-01-01
    • 1970-01-01
    • 2014-08-08
    相关资源
    最近更新 更多