2013-07-16 18 views
12

Desidero inserire alcune istruzioni con un collegamento: onclick chiama uno script che mostra una semplice casella di avviso. Se l'ho fatto così ...Come evitare di ricaricare con onclick senza "#"?

<label for="arquivo">Máximo de 1MB, observe os <a href="" onclick="ajudaUpload();">tipos permitidos</a>.</label> 

la pagina viene ricaricata anche con un ritorno falso, e se l'ho fatto così ...

<label for="arquivo">Máximo de 1MB, observe os <a href="#" onclick="ajudaUpload();">tipos permitidos</a>.</label> 

con il simbolo "#", la pagina viene fatto scorrere verso l'alto e "#" viene aggiunto alla stringa di query. C'è un terzo modo per farlo senza ricaricare, scorrere e spazzatura?

+3

rimuovere l'href – Prisoner

+1

@Prisoner è necessario per l'usabilità, come la navigazione da tastiera e lo stile di collegamento predefinito – Izkata

+0

È probabile che non si debba utilizzare l'attributo 'onclick' in primo luogo. –

risposta

24

return false dopo la chiamata:

<a href="" onclick="ajudaUpload();return false;">tipos permitidos</a> 

O se la funzione restituisce false, allora è possibile restituire il risultato della funzione:

<a href="" onclick="return ajudaUpload();">tipos permitidos</a> 

Non è sufficiente per tornare solo falso nella funzione , devi effettivamente restituire false dal gestore dei clic.

+0

Ho fatto un test in Safari e funziona come la prima linea. Inoltre, non è necessario il ritorno falso nella funzione. È sufficiente che il browser ignori il valore restituito e utilizzi solo ciò che si trova all'interno dell'onClick. – Gustavo

+0

Modifica: ho eseguito nuovamente un test con la seconda riga e funziona anche, dimentico semplicemente il ritorno prima della chiamata ... – Gustavo

+0

Sì, è importante che l'evento onclick alla fine restituisca false. Se solo la funzione restituisce false, l'espressione verrà semplicemente valutata e l'evento click non restituirà nulla. – MrCode

3

È possibile utilizzare il metodo .preventDefault() o restituire false oppure rimuovere il tag HREF tutti insieme. O dovrebbe funzionare bene.

Vc nao deviar estar using onclick dessa forma pra comecar. Ja eh bem antigo e nao se usa assim mais.

+0

@Christian: No, è una funzione standard, sebbene per IE8 sia necessario uno spessore. –

+0

@ebramtharwat: Perché stai postando un link ai documenti jQuery? –

+2

Perché il voto negativo? http://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-flow-cancelation –

0

Quasi tutti gli elementi supportano gli eventi onclick, quindi è possibile utilizzare un b tag o un tag button, anche un tag span. Quindi puoi modificarlo in modo che appaia come un link (un tag) o in qualsiasi altro modo tu voglia. Ad esempio:

<label for="arquivo">Máximo de 1MB, observe os <b onclick="ajudaUpload();">tipos permitidos</b>.</label> 
-1

Rimuovere il tuo herf e dare id per il tag. Quindi usando id puoi mostrare il tuo avviso. ('#id'). click (function() {alert (message); return false; });

3
<a href="" onclick="return ajudaUpload()">tipos permitidos</a> 

e poi restituire false nella funzione: '?'

function ajudaUpload() 
{ 
    ... 
    return false; 
} 
+0

Perché preoccuparsi di gestire il valore 'return' della funzione? Solo 'return false;' dopo la chiamata alla funzione e farà la stessa cosa, senza creare separazione – Ian

+0

Beh, in questo caso lo faremo lo stesso, ma potresti voler restituire true se sono soddisfatte alcune condizioni. – Samurai

+0

Non funziona, verrà ricaricato, alla lista su Safari. – Gustavo

2

modo molto semplice per farlo è sufficiente aggiungere (punto interrogativo) :)

F.e.

<a href="#?">Moiz Travadi</a> 
3

È possibile utilizzare:

<a href = "javascript:void(0);" onclick="ajudaUpload();"> 

Anche io era bloccato su un problema simile. Volevo usare la funzione onclick ma la pagina si ricaricherà, cosa che non volevo. Ho provato href = "javascript: void (0);" e ha funzionato.

+0

Interessante! Non sono sicuro se sia regolare l'uso di javascript come riferimento, ma c'è la possibilità che onclick non restituisca Boolean se si blocca per qualche motivo, e in questo caso, viene eseguito il ricaricamento. Questo hack potrebbe impedire di eseguire la ricarica, vale la pena provare. – Gustavo

+0

risposta accettata non ha funzionato 4 me - sarebbe ancora ricaricare, questo ha fatto, chiedersi perché. –

Problemi correlati