我的页面上有一个锚点,如下所示:<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
,但这没有帮助。
提前致谢!
答案 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.");
}
});