获取自定义提示框 return true or false

Getting a custom prompt box to return true or false

我正在尝试编写自定义 javascript 确认框。单击 [OK] 按钮时,对话框应为真值,单击 [CANCEL] 按钮时,对话框应 return 值为假。但是,似乎警告框过早触发,当我单击按钮时,没有任何反应。

function test() {

var btn1 = "<br><br><input type='button' class='button' value='OK' onclick='function(){ return true}'>"
var btn2 = "<br><br><input type='button' class='button' value='CANCEL' onclick='function(){ return false}'>"

var x = ShowDialog(false,"Test",btn1 + btn2)

alert(x)

}

我做了一个fiddle

首先,您不能在 javascript 中使用自定义对话框来阻止执行 alert 的方式。实际上,您要实现的是 confirm()。是浏览器提供的系统功能。它 returns truefalse 取决于单击的按钮。

然而,使用 html 进行自定义弹出窗口的唯一方法是异步进行。因此,您应该调用 ShowDialog 并为其提供回调。当用户单击其中一个按钮时将调用它。调用 ShowDialog 之后存在的任何代码都将被立即调用。所有你想处理对话框结果的代码都应该放在回调中

var btn1 = "<br><br><input type='button' class='button' value='OK' x-data='true'>"
var btn2 = "<br><br><input type='button' class='button' value='CANCEL' x-data='false'>"
ShowDialog(false, "Test", btn1 + btn2, undefined, function(result){
    alert(result)
})

function ShowDialog(modal, title, text, colour, callback) {
    ...
    $('input', '#dialog_text').click(function(){
        if(typeof callback === 'function'){
            callback($(this).attr('x-data'));
        }
        HideDialog();
    });
}

Edited fiddle