获取自定义提示框以返回true或false

时间:2015-07-23 18:10:09

标签: javascript jquery confirm

我正在尝试编写自定义的javascript确认框。单击[确定]按钮,对话框应为true值,单击[CANCEL]按钮时,对话框应返回false值。但是,警报框似乎过早地触发,当我点击按钮时,没有任何反应。

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

1 个答案:

答案 0 :(得分:0)

首先,你不能在javascript中拥有一个自定义对话框来阻止执行alert的方式。实际上,您尝试实施的是confirm()。它是浏览器提供的系统功能。它会返回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