Extjs 4 MessageBox提示是必需的

cgfeq70w  于 2022-11-05  发布在  其他
关注(0)|答案(3)|浏览(158)

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

7y4bm7vi

7y4bm7vi1#

不幸的是,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拖到不同的位置,它将再次回到中心。

yxyvkwin

yxyvkwin2#

强制性是指强制用户选择一个可用按钮吗?
如果是这样,您可以使用

'closable: false'

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

oiopk7p5

oiopk7p53#

我创建了一个自定义函数,用于将提示窗口作为参数设置为所需提示输入

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');
            }
        });
    }

相关问题