突出显示ExtJS(3.x)MessageBox中的默认按钮

Ser*_*gio 5 extjs messagebox button

在Ext.MessageBox中是否有一个Ext-approction方法来突出显示默认按钮(按Enter键触发的按钮)?

请注意,我不想通过在显示MessageBox时聚焦按钮来做到这一点(如果是"提示"对话框,我希望输入元素具有焦点).

我知道我可以通过在按钮元素中添加一个自定义类来实现这一点,但是...也许有更好的,更类似Ext的方式来做到这一点?

谢谢.

Roh*_*and 7

在ExtJs 4中,您可以设置默认按钮,如下所示:

Ext.MessageBox.defaultButton = buttonIndex;
Run Code Online (Sandbox Code Playgroud)

其中'buttonIndex'是对话框上按钮的索引.您需要在调用Ext.MessageBox.Show之前执行此操作.


Jam*_*all 4

简而言之...不。Ext 目前不提供在任何组件中突出显示按钮的方法Ext.MessageBox,无论如何也不通过配置选项。

但是,根据具体情况,有一些方法。例如,如果您正在使用Ext.MessageBox.show()(您实际上可以将其用于所有消息框),那么您可以执行以下操作:

new Ext.Msg.show({
   title: 'Test',
   msg: 'A sample message box with a button marked as default',
   buttons: { ok: '<b>Submit</b>', cancel: 'Cancel' },
   fn: function(btn) {
       if(btn == 'ok') {
          //do something
       }
   },
   icon: Ext.Msg.WARNING
} 
Run Code Online (Sandbox Code Playgroud)

我们所做的就是将<b>标签添加到配置中的按钮之一,这会明显以粗体显示。

您提到的另一种方法是添加自定义类并以文本颜色标记按钮,您甚至可以像我们对<b>上面的标签所做的那样添加该类,以使其更容易。

buttons: { ok: '<span class="highlighted-option">Submit</span>', cancel: 'Cancel' },

除了这种方法之外,或者不扩展类Ext.MessageBox,没有其他方法可以实现这一点。