Extjs 4 MessageBox提示必须

时间:2011-09-26 13:00:03

标签: extjs extjs4

有没有办法在extjs 4中的提示消息框上强制输入,比如将一个allowBlank配置添加到textarea ...

3 个答案:

答案 0 :(得分:6)

遗憾的是,Ext.MessageBox不支持根据登录处理程序的返回值控制close-behavior(至少在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拖到另一个位置,它将再次重新定位。

答案 1 :(得分:3)

强制执行,您只是强迫用户选择其中一个可用按钮?

如果是,您可以使用

'closable: false' 

以防止用户在未点击按钮的情况下关闭此框。

答案 2 :(得分:0)

我创建了自定义函数来设置需要的提示输入,并以提示窗口作为参数

setPromptRequired: function(promptWin) {
        const field = promptWin.down('textfield');
        const button = promptWin.down('#ok');
        button.disable();
        field.on({
            change: function(item, value) {
                if(value && value.trim() !== '') {
                    button.enable();
                } else {
                    button.disable();
                }
            }
        });

          promptWin.on({
            beforehide: function(){
                button.enable();
                field.resumeEvent('change');
            },
            beforeclose: function(){
                button.enable();
                field.resumeEvent('change');
            }
        });
    }