首页 文章

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

提问于
浏览
0

我正在尝试编写自定义的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

    首先,你不能在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

相关问题