2013-06-13 3 views
1

를 설정할 때 리디렉션에서 I는 다음과 같습니다 내 페이지에 앵커가 : <a id="login" href="login.php"></a> 그러나정지 앵커 동적 HREF

, 때 그가 때 데이터가 손실되지 않도록 순서대로 페이지에서 사용자의 데이터를 입력, 다음과 같이 (데이터가 로그인하지 않고 저장할 수 있습니다) 로그인 페이지로 이동, 나는 HREF을 복용하고 사용자에게 경고하기 위해 온 클릭을 추가하여 변경 :

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

가 사용에서 preventDefault –

답변

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 파일에 포함되어 있습니다.

+0

아름답게 근무해야합니다, 감사합니다! – Phil

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."); 
    } 
}); 
관련 문제