2012-08-06 7 views
6

L'HTML è:Ho bisogno di eseguire due funzioni onclick. Non riesco ad entrambi di lavorare anche quando annidate insieme

<input name="submit" 
     type="submit" 
     class="button" 
     value="Click Here" 
     tabindex="13" 
     onclick="return ValidateForm();" /> 

La funzione ValidateForm() ha tutto il codice sotto forma convalidare solito. L'altra funzione non riesco a correre (tranne per sé così fine..example

<input name="submit" 
     type="submit" 
     class="button" 
     value="Click Here" 
     tabindex="13" 
     onclick="disDelay(this);" /> 

Ho provato entrambi conclude dopo la ... esempio onclick

<input name="submit" 
     type="submit" 
     class="button" 
     value="Click Here" 
     tabindex="13" 
     onclick="return ValidateForm(); disDelay(this);" /> 

Ho anche provato mettere un codice nella stessa funzione senza successo.

la funzione disDelay() è

function disDelay(obj){ 
    obj.setAttribute('disabled','disabled'); 
    setTimeout(function(){obj.removeAttribute('disabled')},10000); 
} 

È da utilizzare come ritardo per impedire al modulo di ottenere invii duplicati da più clic. Il ritardo è ora di 10 secondi solo a scopo di test. Ho bisogno della convalida e del ritardo per lavorare insieme.

+1

'element.onclick = function() {function01(); function02(); }; 'non inserire eventi in html: D – ZiTAL

+0

qual è il comportamento che stai osservando? – laker

+0

Non verrà convalidato o ritardato quando utilizzo erroneamente entrambe le funzioni con onclick. Quando uso solo una delle funzioni o l'altra funziona bene, ma ho bisogno di entrambe. – Allison

risposta

4

Tornando al valore della prima funzione termina il gestore di clic. In sostanza, questo è quello che si sta facendo nel vostro tentativo di combinare:

<input name="submit" type="submit" class="button" 
     value="Click Here" tabindex="13" 
     onclick="return submit_Click(this);" /> 

<script type="text/javascript"> 
    function submit_Click(sender) { 
     return ValidateForm(); 
     disDelay(sender); // !!! This call is unreachable !!! 
    } 
</script> 

Ecco una semplice opzione per correggerlo:

<input name="submit" type="submit" class="button" 
     value="Click Here" tabindex="13" 
     onclick="return submit_Click(this);" /> 

<script type="text/javascript"> 
    function submit_Click(sender) { 
     var r = ValidateForm(); 
     disDelay(sender); // It seems like you would only want to call this 
          // function if the form is validate, so there should 
          // probably be an if-statement surrounding it. However, 
          // I'll leave that up to you. 
     return r; 
    } 
</script> 
+0

Grazie mille! Sembra che funzioni perfettamente. – Allison

2

È quasi avuto, basta invertire l'ordine della funzione chiamate.

<input name="submit" type="submit" class="button" value="Click Here" tabindex="13" onclick="disDelay(this); return ValidateForm(); " /> 

Il ritorno da ValidateForm sta per causare il resto del codice per essere irraggiungibile, quindi deve essere l'ultimo.

0

nella stringa di onclick il disDelay (questo) non è sempre chiamata perché ritorni la risposta da ValidateForm(), quindi la seconda affermazione non esegue.

Se è assolutamente necessario utilizzare l'attributo onclick all'interno del codice HTML, provare:

<input name="submit" type="submit" class="button" value="Click Here" tabindex="13" onclick="disDelay(); return ValidateForm();" /> 
Problemi correlati