如何通过href onclick使fancybox显示“是/否确认框”?

时间:2011-04-12 22:14:53

标签: javascript html fancybox

我使用以下代码作为javascript中确认框的替换。

    function fancyAlert(msg) {
    jQuery.fancybox({
        'modal' : true,
        'content' : "<div style=\"margin:1px;width:240px;\">"+msg+"<div style=\"text-align:right;margin-top:10px;\"><input style=\"margin:3px;padding:0px;\" type=\"button\" onclick=\"jQuery.fancybox.close();\" value=\"Ok\"></div></div>"        });    }

function fancyConfirm(msg, callback) {
    var ret;
    jQuery.fancybox({
        'modal' : true,
        'content' : "<div style=\"margin:1px;width:240px;\">"+msg+"<div style=\"text-align:right;margin-top:10px;\"><input id=\"fancyConfirm_cancel\" style=\"margin:3px;padding:0px;\" type=\"button\" value=\"Cancel\"><input id=\"fancyConfirm_ok\" style=\"margin:3px;padding:0px;\" type=\"button\" value=\"Ok\"></div></div>",
        onComplete : function() {
            jQuery("#fancyConfirm_cancel").click(function() {
                ret = false;
                jQuery.fancybox.close();
            })
            jQuery("#fancyConfirm_ok").click(function() {
                ret = true;
                jQuery.fancybox.close();
            })
        },
        onClosed : function() {
            if (typeof callback == 'function'){ callback.call(this, ret); };
        }
    });
}

function fancyConfirm_text() {
    fancyConfirm("Ceci est un test", function(ret) {
        alert(ret)
    })
}

我正在使用这样的超链接:

<a href="http://www.example.com/" onclick="fancyConfirm("Are you sure you want to delete?");">Test</a>

我卡住了,它只是不会显示任何东西?,我认为它与fancyConfirm所需的回调变量有关,但我不确定这意味着什么以及它是如何应用的。

感谢您的帮助。

3 个答案:

答案 0 :(得分:2)

您的链接属性中存在错误。您不能在双引号内放置双引号而不转义它们。现在,你的onclick属性只是:“fancyConfirm(”

尝试:

<a href="http://www.example.com/" onclick="fancyConfirm('Are you sure you want to delete?');">Test</a>

或者:

<a href="http://www.example.com/" onclick="fancyConfirm(\"Are you sure you want to delete?\");">Test</a>

答案 1 :(得分:0)

你需要这个:

<a href="#" onclick="fancyConfirm('Are you sure you want to delete?');return false;">Test</a>

那应该有用。哈希(#)不会显示在网址中,因为return false;只会使onclick中的内容发生。

另外,我知道这很明显,但是你在页面上定义了Fancybox和jQuery吗?

答案 2 :(得分:0)

看一下这篇文章,

Javascript/Jquery Callback for Fancybox Yes No Confirm

花式盒子的作者有一个稍微不同的解决方案,它可以工作。