我正在尝试编写自定义的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:
答案 0 :(得分:0)
首先,你不能在javascript中拥有一个自定义对话框来阻止执行alert
的方式。实际上,您尝试实施的是confirm()
。它是浏览器提供的系统功能。它会返回true
或false
,具体取决于点击的按钮。
但是,使用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();
});
}