使用ExtJS 4.2标签时是否有一种简单的方法可以跳过禁用的按钮?
我开始实现一个完整的自定义keynav来解决这个问题,但它正在变成一个怪物,可以处理任何其他类型的组件,这些组件可以被选中。
我google了一下,找不到任何东西虽然看起来像是禁止(不可聚焦)按钮上的标签似乎是正常的事情。还有其他人实现过这样的东西吗?
答案 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;
}
});