动态设置href时停止重定向

时间:2013-06-13 19:29:31

标签: javascript jquery

我的页面上有一个锚点,如下所示:<a id="login" href="login.php"></a>

然而,当用户在页面中输入数据时,为了在进入登录页面时不会丢失该数据(可以在不登录的情况下保存数据),我通过取出href来更改它并添加一个onclick来警告用户,如下所示:

if (-code which checks for user input-){
        $('#login').attr('href','javascript:void(0)');$('#login').attr('onclick','logincheck()');
        }
function logincheck(){
alert("Going to the login page will make you lose your work. If you want to save them to a collection, please do so now. When you're ready, click the login button again."); 
$('#login').attr('onclick','');$('#login').attr('href','login.php');
}

因此用户收到警告,现在他可以再次单击登录按钮进行登录。

由于某种原因$('#login').attr('href','login.php');因为某种原因而导致页面重定向的问题。我猜这是因为我们仍处于锚定点击的中间。

如何更改此href,但在再次单击按钮之前,请保持页面不会实际重定向?我尝试添加return false,但这没有帮助。

提前致谢!

2 个答案:

答案 0 :(得分:1)

为什么不将它合并为一个项目?

$('#login').on('click',function(e){
    if($(this).data('clicked')!=='true'){
        e.preventDefault();
        alert("Going to the login page will make you lose your work. If you want to save them to a collection, please do so now. When you're ready, click the login button again.");
        $(this).data('clicked','true');
    }
});

这将首次阻止操作,提供警报,并为其提供clicked数据以显示已单击该操作。第二次它不符合if条件,并继续登录。

这可以避免javascript:void(0)位以及任何onclick属性......所有内容都包含在您的JS文件中。

答案 1 :(得分:0)

您需要e.preventDefault();

$('#login').on('click', function(e){
    if(!$(this).data('clicked')){
            $(this).data('clicked', true);
            e.preventDefault();
            alert("Going to the login page will make you lose your work. If you want to save them to a collection, please do so now. When you're ready, click the login button again."); 
    }
});