2012-06-28 62 views
14

¿Cómo puedo detener el redireccionamiento de una etiqueta de anclaje a otra página si el usuario no ha iniciado sesión? Tengo una función para verificar si el usuario está conectado o no. Quiero hacerlo con JQuery o JavaScript. Esto es lo que he probado hasta ahora, pero sin resultados:Cómo detener la redirección de un ancla utilizando 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

Tal vez le sugiera que use sesiones que este método –

+0

Puede devolver false, cuando se activa un evento onclick. – funerr

+0

La autenticación debe realizarse en el servidor en su PHP, no en JavaScript en absoluto. – Greg

Respuesta

38

favor utilizo

http://api.jquery.com/event.preventDefault/demostraciónhttp://jsfiddle.net/aRBY4/6/

e.preventDefault() 

cita `

Si esto método se llama, la acción predeterminada del evento no será activada.

Además, si se me permite sugerirlo leer esto: .prop() vs .attr()

esperanza que esta ayuda,

código de ejemplo

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

En su caso favor probar este

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

He usado el mismo método que usted mencionó pero devuelve indefinido al hacer clic si le aviso id of anchor. – Ankit

+0

@Ankit cool, así que evitaDefault a un lado, ':)' hay otro problema con el selector que obtiene el 'id', también puedes pegar tu html en la pregunta y puedo ayudarte, ovaciones –

+0

me faltaba el ID como mi la página mostraba el mismo código para dos casos, Muchas gracias @Tats, problema resuelto. – Ankit

0

Cambiar el controlador de eventos de clic a este

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

Uso event.preventDefault(). Se usa para evitar la acción predeterminada del evento.

<script type="text/javascript"> 
$(document).ready(function(){ 
     $('a').click(function(){ 
      var id = $(this).attr('id'); 
     if(id == 'yes'){ 
      event.preventDefault() 
     }else{ 
      //redirect 
     } 
    }); 
}); 
</script> 
Cuestiones relacionadas