2012-06-28 47 views
14

Làm cách nào để ngăn một thẻ neo chuyển hướng đến một trang khác nếu người dùng không đăng nhập? Tôi có một chức năng để kiểm tra xem người dùng có đăng nhập hay không. Tôi muốn làm điều đó với JQuery hoặc JavaScript. Dưới đây là những gì tôi đã cố gắng cho đến nay nhưng không có kết quả:Làm thế nào để ngăn chặn một neo từ chuyển hướng bằng cách sử dụng JQuery

<a href="www.somewhere.com" id="yes">Read More</a> 

<script type="text/javascript"> 
    $(document).ready(function(){ 
     $('a').click(function(){ 
      var id = $(this).attr('id'); 
      if(id == 'yes'){ 
       //i want to prevent 
      }else{ 
       //redirect 
      } 
     }); 
    }); 
</script> 
+0

Tôi có thể đề nghị bạn sử dụng các phiên làm phương pháp này –

+0

Bạn có thể trả về false khi một sự kiện onclick được kích hoạt. – funerr

+0

Xác thực cần được thực hiện phía máy chủ trong PHP của bạn, hoàn toàn không phải trong JavaScript. – Greg

Trả lời

38

Vui lòng sử dụng

http://api.jquery.com/event.preventDefault/bản demohttp://jsfiddle.net/aRBY4/6/

e.preventDefault() 

quote '

Nếu đây phương pháp được gọi, hành động mặc định của sự kiện sẽ không được kích hoạt .

Ngoài ra nếu tôi có thể đề nghị đọc: .prop() vs .attr()

hy vọng điều này giúp,

mẫu mã

$('a').click(function(event){ 
    event.preventDefault(); 
    //do whatever 
    } 

Trong trường hợp của bạn hãy thử này

$(document).ready(function() { 
    $('a').click(function(event) { 
     var id = $(this).attr('id'); 
     if (id == 'yes') { 
      event.preventDefault(); 
      //i want to prevent 
     } else { 
      //redirect 
     } 
    }); 
});​ 
+0

tôi đã sử dụng cùng một phương pháp bạn đã đề cập nhưng nó trả về undefined khi nhấp nếu id cảnh báo của neo. – Ankit

+0

@Ankit tuyệt vời, vì vậy hãy ngăn chặnDefault sang một bên, ':)' có một vấn đề khác với bộ chọn nhận 'id' bạn cũng có thể dán html của mình vào câu hỏi và tôi có thể giúp bạn, hãy cổ vũ số –

+0

tôi bị thiếu id trang đã được hiển thị cùng một mã cho hai trường hợp, Cảm ơn rất nhiều @Tats, vấn đề được giải quyết. – Ankit

0

Thay đổi xử lý sự kiện nhấp chuột vào đó

$('a').click(function(e){ 
    var id = $(this).attr('id'); 
    if (id == 'yes') 
    { 
     e.preventDefault(); 
     e.stopPropagation(); 
    } 
    else 
    { 
     //redirect 
    } 
}); 
0

Sử dụng event.preventDefault(). Nó được sử dụng để ngăn chặn hành động mặc định của sự kiện.

<script type="text/javascript"> 
$(document).ready(function(){ 
     $('a').click(function(){ 
      var id = $(this).attr('id'); 
     if(id == 'yes'){ 
      event.preventDefault() 
     }else{ 
      //redirect 
     } 
    }); 
}); 
</script> 
Các vấn đề liên quan