【问题标题】:Getting a custom prompt box to return true or false获取自定义提示框以返回 true 或 false
【发布时间】:2015-07-23 18:10:09
【问题描述】:

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

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

【问题讨论】:

  • 您的代码完全错误,您必须将您的 HTML 和 Javascript 代码分开,请在此处阅读 javascript 和 html 的基本文章w3schools.com 它确实可以帮助您快速解决问题

标签: javascript jquery confirm


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-17
    • 1970-01-01
    • 1970-01-01
    • 2012-06-01
    • 2014-06-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多