0

所以我有一个我构建的消息框可以发送消息。它有 2 个输入,以及一个 OK 和 Cancel 按钮。我可以很容易地访问内容并按照我的设置方式执行正常逻辑:

Ext.Msg.show({
        title: 'Send a Message: ',
        cls: 'MessageBox',
        html: '<div class="message-InnerContainer" >' +
            '<input type="text" id="messageBoxSubject" placeholder="Subject" class="messageBox-Input"/>' +
            '<textarea id="messageBoxMessage" placeholder="Message" class="messageBox-TextArea"></textarea>' +
            '<div>',
        closable: false,
        buttons: [
            { no: 'Cancel', text:'Cancel', cls:'messageBox-CancelButton'},
            { yes: 'OK', text:'Ok', cls:'messageBox-OkButton'}
        ],
        fn: function (btn) {
            if (btn == 'ok') {
                //do success logic
            }
            else (){
                //do failure logic
            }
        }
    });

只有一个问题:当按下 OK 时,我似乎无法找到一种方法来防止盒子自动关闭。理想情况下,我想快速检查以确保两个输入不为空。我想我可以通过在 html 部分中放置自定义按钮来覆盖按钮,但如果有办法停止自动关闭,它会在语法上更令人愉悦和可读。有谁知道它是否可能?

4

1 回答 1

2

天啊!你真的应该考虑使用一些常规的 Ext文本字段文本区域作为窗口的项目,而不是你自己烘焙的 html...

无论如何,使用handler你的按钮,而不是fn处理程序。你可以在那里做任何你想做的事情,并且只有在你喜欢的时候才关闭窗口:

buttons: [
    { text:'Cancel', cls:'messageBox-CancelButton', handler: function() {
        this.hide();
    }},
    { text:'Ok', cls:'messageBox-OkButton', handler: function() {
        var allGood = false;

        // do your stuff here

        // ... and if your satisfied with the result, close the window
        if (allGood) {
            this.hide();
        }
    }}
]
于 2013-08-01T00:48:41.987 回答