javascript - Extjs6.2,使用箭头键导航文本字段

标签 javascript jquery extjs

我正在使用 Ext Js v6.2 Grid,在我的应用程序中,我有三组文本字段,我想使用箭头键的 [UP][DOWN][RIGHT][LEFT] 下面的代码在 Ext js 中未触发,请解决问题。

脚本

$(document).keydown(
    function(e)
    {    
        if (e.keyCode == 39) {      
            $(".move:focus").next().focus();
        }
        if (e.keyCode == 37) {      
            $(".move:focus").prev().focus();
        }
    }
);

LIKE THIS-I WANT-DEMO

最佳答案

您需要使用KeyNav在 ExtJS 中。

Ext.util.KeyNav 为规范化键盘导航提供了方便的包装器。 KeyNav 允许您将导航键绑定(bind)到按下按键时将调用的函数调用,从而提供一种简单的方法来为任何 UI 组件实现自定义导航方案。

在ExtJs中有方法next()prev()因此您可以将其用于您的组件,例如 textfield.next()textfield.prev()

在此FIDDLE ,我使用 Ext.util.KeyNav 创建了一个演示,它可以按照您的要求工作。希望这能帮助您或指导您实现您的要求。

Ext.create('Ext.panel.Panel', {
    renderTo: Ext.getBody(),
    title: ' Example with key Navigation',
    layout: 'hbox',
    defaults: {
        xtype: 'textfield',
        flex: 1,
        margin: 10
    },
    items: [{
        emptyText: 'A'
    }, {
        emptyText: 'B'
    }, {
        emptyText: 'C'
    }, {
        emptyText: 'D'
    }, {
        emptyText: 'E'
    }],
    listeners: {
        afterrender: function () {
            var panel = this;
            panel.keynav = Ext.create('Ext.util.KeyNav', {
                target: Ext.getBody(),
                scope: panel,
                left: panel.doFocusToText,
                right: panel.doFocusToText
            });
        }
    },
    /*
    * this will fire on left or right key pressed.
    * @param {Event} e
    */
    doFocusToText: function (e) { //{ http://docs.sencha.com/extjs/4.2.5/#!/api/Ext.EventObject }
        var panel = this,
            current = panel.down('[hasFocus=true]');

        if (e.LEFT == e.getKey()) {
            if (current.prev()) {
                current.prev().focus();
            }
        } else {
            if (current.next()) {
                current.next().focus();
            }
        }
    }
});

关于javascript - Extjs6.2,使用箭头键导航文本字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47586957/

相关文章:

javascript - 从数组中获取部分属性值

javascript - 较大的 Bootstrap 传送带内的较小的 Bootstrap 传送带 - 较小的 Bootstrap 传送带旋转的功能问题

javascript - http ://whateverorigin. org/的跨域访问问题

css - ExtJs LoadMask 在屏幕调整大小时消失

javascript - ExtJS 日期和时区

javascript - 使 javascript 函数更短

javascript - 在javascript中指定图像源

javascript - 如何从工厂函数的方法中删除 `this` 关键字?

javascript - 如何连接正确的链接目录文件

javascript - 为什么我的 List<string> 没有从 $ajax 调用的 MVC Controller 返回