2011-09-26 59 views

回答

6

Ext.MessageBox不幸地不支持基于登录处理程序的返回值控制关闭行为(至少在Ext 4.0.2a中根本没有计算返回值)。

作为解决方法,您可以使用相同(或更新)的配置在您的回调处理程序中重新打开另一个MessageBox。

Ext.Msg.prompt('Name', 'Please enter your name:', function(btn, text, cfg) { 
    if(btn == 'ok' && Ext.isEmpty(text)) { 
     var newMsg = '<span style="color:red">Please enter your name:</span>'; 
     Ext.Msg.show(Ext.apply({}, { msg: newMsg }, cfg)); 
    } 
}); 

在某些情况下,用户可能会遇到轻微的闪烁现象。然而,在我的测试中,它根本不明显。 如果用户将MessageBox拖动到其他位置,它将再次重新调入。

3

通过强制你仅仅意味着强制用户选择一个可用的按钮?

如果是这样,你可以使用

'closable: false' 

,以防止用户关闭对话框,不点击一个按钮。

+0

我想强制输入,他可以关闭消息框,如果他想要的话。 – nscrob

+2

我不确定直接使用“提示”是否具有该功能,但根据文档,您可以在提示中指定回调函数,该函数将输入的文本作为参数。一种选择是从该处理程序返回false,或者如果该值为空,则重新显示相同的框。 – dougajmcdonald

+0

谢谢你的答案,我正在考虑这样的事情,而且这是我能做到的唯一方法 – nscrob