标签时跳过禁用按钮 - keynav

时间:2014-04-18 17:39:37

标签: javascript extjs keyboard extjs4.2

使用ExtJS 4.2标签时是否有一种简单的方法可以跳过禁用的按钮?

我开始实现一个完整的自定义keynav来解决这个问题,但它正在变成一个怪物,可以处理任何其他类型的组件,这些组件可以被选中。

我google了一下,找不到任何东西虽然看起来像是禁止(不可聚焦)按钮上的标签似乎是正常的事情。还有其他人实现过这样的东西吗?

1 个答案:

答案 0 :(得分:0)

似乎ExtJS按钮有一个子元素btnEl,当设置了禁用状态时会错过,我做了一些覆盖来处理这个问题:

// force disabled buttons to be untabbable
Ext.override(Ext.button.Button, {

    afterRender: function() {
        var me = this;

        if (me.disabled) {
            me.btnEl.dom.removeAttribute('tabIndex');
        }
    },

    enable: function(silent) {
        var me = this;

        me.callParent(arguments);

        me.removeClsWithUI('disabled');
        if (me.rendered) {
            me.el.dom.setAttribute('tabIndex', me.tabIndex);
            me.btnEl.dom.setAttribute('tabIndex', me.tabIndex);
        }

        return me;
    },

    disable: function(silent) {
        var me = this;

        me.callParent(arguments);

        me.addClsWithUI('disabled');
        me.removeClsWithUI(me.overCls);
        if (me.rendered) {
            me.el.dom.removeAttribute('tabIndex');
            me.btnEl.dom.removeAttribute('tabIndex');
        }

        if (me.btnInnerEl && Ext.isIE7m) {
            me.btnInnerEl.repaint();
        }

        return me;
    }

});