对于具有属性'href'的链接,Javascript返回false

时间:2013-06-24 04:22:24

标签: javascript jquery return-value jquery-dialog

我使用 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 值。谁能给我一个解决方案?感谢。

3 个答案:

答案 0 :(得分:1)

而不是return true;return 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);
});

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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