2012-06-28 17 views
14

Come posso interrompere un tag di ancoraggio che reindirizza a un'altra pagina se l'utente non ha effettuato l'accesso? Ho una funzione per verificare se l'utente è connesso o meno. Voglio farlo con JQuery o JavaScript. Ecco quello che ho provato finora, ma senza risultati:Come fermare un'ancora dal reindirizzamento utilizzando 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

avrei forse suggerire di usare le sessioni che questo metodo –

+0

È possibile restituire false, quando viene attivato un evento onclick. – funerr

+0

L'autenticazione deve essere eseguita sul lato server nel PHP, non in JavaScript. – Greg

risposta

38

Si prega di utilizzare

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

e.preventDefault() 

citazione `

Se questo metodo viene chiamato, l'azione predefinita dell'evento non sarà attivata.

Anche se mi può suggerire di leggere questo: .prop() vs .attr()

speranza che questo aiuti,

codice di esempio

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

Nel tuo caso si prega di provare questo

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

ho usato lo stesso metodo che hai citato ma restituisce undefined al click se avviso id di anchor. – Ankit

+0

@Ankit cool, quindi prevenireDefault aside, ':) c'è un altro problema con il selettore che ottiene l'id' puoi anche incollare il tuo html nella domanda e potrei aiutarti, evviva –

+0

mi mancava id come mio pagina stava mostrando lo stesso codice per due casi, Grazie mille @Tats, problema risolto. – Ankit

0

Cambia il tuo gestore di eventi click a questo

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

Usa event.preventDefault(). Viene utilizzato per impedire l'azione predefinita dell'evento.

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