0

我有一个使用jQuery.UI.Dialog进行用户确认的 Javascript 函数:

function confirmation(selector, caption, str){
    $('#' + selector).removeAttr('title');
    $('#' + selector + ' p').html('');

    $('#' + selector).attr('title', caption);
    $('#' + selector + ' p').html(str);

    $('#' + selector).dialog({
        resizeable: false,
        modal: true,
        buttons: {
            'OK' : function(){
                return true;
            },
            Cancel: function(){
                $(this).dialog('close');
                return false;
            }
        }
    });
}

但是当我使用以下命令调用该函数时:

<a href="test.html" onClick="confirmation('conf', 'delete', 'Are you sure?');">Delete</a>

它总是给出TRUE值。谁能给我一个解决方案??谢谢。

4

3 回答 3

1

而不是return true;orreturn false;并且根据返回的值执行操作。在您的情况下,一种简单的方法就是在回调函数中执行您的逻辑。像这样:

function confirmation(selector, caption, str,link){
    //here I pass in the link in case you need to know which link was clicked
    $('#' + selector).removeAttr('title');
    $('#' + selector + ' p').html('');

    $('#' + selector).attr('title', caption);
    $('#' + selector + ' p').html(str);

    $('#' + selector).dialog({
        resizeable: false,
        modal: true,
        buttons: {
            'OK' : function(){
                //your logic for true case
                $(this).dialog('close');
            },
            Cancel: function(){
                //your logic for false case
                $(this).dialog('close');
            }
        }
    });
}

更新您的 html 以传递单击的链接:

<a id="test" href="test.html" onClick="confirmation('conf', 'delete', 'Are you sure?',this);">Delete</a>

我认为最好为此使用jquery:

$("#test").click(function(event){
    event.preventDefault();
    confirmation('conf', 'delete', 'Are you sure?',this);
});
于 2013-06-24T06:33:26.947 回答
0

我对您的脚本进行了一些更改。我想在这种情况下使用可能会因为性质return而导致错误的解释。因此,为or函数本身async的正面和负面响应调用您想要执行的函数。这是可能的灵魂之一OKCancel

http://jsfiddle.net/RmM7j/1/

于 2013-06-24T05:15:30.697 回答
0

@Aldi Unanto-当您使用链接标签并使用 href 属性转到另一个页面时,无论您的 onclick 函数返回 false 还是 true,它总是执行 href。因此,您需要将 href 属性设置为 '#' 并像@Khanh TO 所说的那样传播下一页调用。这是解决问题的最佳方法。

于 2013-06-24T06:45:27.857 回答