simplemodal确认示例等待返回值



我对simpleModal确认示例有问题。我想等待结果作为基本确认对话框,然后根据按下的按钮采取行动。我在其他js中调用。我的js代码是:

 var res = confirm("Delete elements?");
 if (res == true) {
       mainController.deleteNode(nodeMoveMessage, url);
  }

制作对话框的js是:

function confirm(message, callback) {
var modalWindow = document.getElementById("confirm");
console.log(modalWindow);
$(modalWindow).modal({
    closeHTML: "<a href='#' title='Close' class='modal-close'>x</a>",
    position: ["20%",],
    overlayId: 'confirm-overlay',
    containerId: 'confirm-container',
    onShow: function (dialog) {
        var modal = this;
        $('.message', dialog.data[0]).append(message);
        // if the user clicks "yes"
        $('.yes', dialog.data[0]).click(function () {
            // close the dialog
            modal.close(); // or $.modal.close();
            // call the callback
            return true;
        });
    }
});
}

我的jsp中的div是:

    <div id='confirm'>
        <div class='header'><span>Confirm</span></div>
        <div class='message'></div>
        <div class='buttons'>
            <div class='no simplemodal-close'>No</div><div class='yes'>Yes</div>
        </div>
    </div>

非常感谢!

您必须在模态中添加回调,所以请先在confirm函数中添加它:

function confirm(message, callback) {
    var modalWindow = document.getElementById("confirm");
    console.log(modalWindow);
    $(modalWindow).modal({
        closeHTML: "<a href='#' title='Close' class='modal-close'>x</a>",
        position: ["20%",],
        overlayId: 'confirm-overlay',
        containerId: 'confirm-container',
        onShow: function (dialog) {
            var modal = this;
            $('.message', dialog.data[0]).append(message);
            $('.yes', dialog.data[0]).click(function () {
                modal.close(); $.modal.close();
                callback(); // HERE IS THE CALLBACK
                return true;
            });
        }
    });
}

然后,您可以使用回调调用confirm函数,该回调在单击yes按钮时执行,如下所示:

function doSomething() {
    mainController.deleteNode(nodeMoveMessage, url);
}
confirm("Delete elements?", doSomething);

现在,当用户单击yes按钮时,doSomething函数将被调用,元素将被删除。

最新更新