2012-08-06 14 views
6

HTML jest:Muszę uruchomić dwa przyciski funkcyjne onclick. Nie mogę im zarówno do pracy, nawet jeśli zagnieżdżone razem

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

Funkcja ValidateForm() posiada wszystkie standardowe kod forma stwierdzenia prawidłowości. Druga funkcja nie mogę uruchomić (z wyjątkiem sama działa fine..example

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

Próbowałem umieszczenie ich zarówno po onclick ... przykład

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

Próbowałem też oddanie jednym z kodu w tej samej funkcji bez powodzenia.

The disDelay function() jest

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

Jest to opóźnienie, aby formularz nie był duplikowany przy użyciu wielu kliknięć. Opóźnienie wynosi teraz 10 sekund tylko dla celów testowych. Potrzebuję zatwierdzenia i opóźnienia do wspólnej pracy.

+1

'element.onclick = function() {function01(); function02(); }; 'nie umieszczaj zdarzeń na html: D – ZiTAL

+0

jakie jest zachowanie, które obserwujesz? – laker

+0

Nie będzie sprawdzania poprawności ani opóźnienia, gdy niepoprawnie użyje obu funkcji z onclick. Kiedy używam tylko jednej lub drugiej funkcji, działa dobrze, ale potrzebuję obu. – Allison

Odpowiedz

4

Zwrócenie wartości pierwszej funkcji kończy obsługę kliknięcia. Zasadniczo, to co robisz w swojej próbie połączenia:

<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> 

Tu jest jedna prosta opcja to poprawić:

<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

Dziękuję bardzo! Wydaje się, że działa doskonale. – Allison

2

Prawie miałem, po prostu odwrócić kolejność funkcji połączenia.

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

Powrót z ValidateForm spowoduje, że reszta kodu będzie nieosiągalna, więc musi być ostatnia.

0

W twoim ciągu onclick disDelay (this) nie jest wywoływany, ponieważ zwracasz odpowiedź z ValidateForm(), więc druga instrukcja nigdy nie jest wykonywana.

Jeśli koniecznie musi użyć atrybutu onclick wewnątrz html, spróbuj:

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