javascript - Trebuie să rulez două funcții la click. Nu reușesc să fac să funcționeze ambele chiar și atunci când sunt cuplate împreună
HTML-ul este:
<input name="submit"
type="submit"
class="button"
value="Click Here"
tabindex="13"
onclick="return ValidateForm();" />
Funcția ValidateForm() are tot codul obișnuit de validare a formularului. Cealaltă funcție nu pot să o fac să ruleze (în afară de faptul că singură funcționează bine..exemplu
<input name="submit"
type="submit"
class="button"
value="Click Here"
tabindex="13"
onclick="disDelay(this);" />
Am încercat să le pun pe amândouă după onclick...exemplu
<input name="submit"
type="submit"
class="button"
value="Click Here"
tabindex="13"
onclick="return ValidateForm(); disDelay(this);" />
Am încercat, de asemenea, să pun codul într-o singură funcție, fără succes.
Funcția disDelay() este
function disDelay(obj){
obj.setAttribute('disabled','disabled');
setTimeout(function(){obj.removeAttribute('disabled')},10000);
}
Trebuie folosit ca o întârziere pentru a împiedica formularul să primească trimiteri duplicate din cauza mai multor clicuri. Întârzierea este acum de 10 secunde doar în scop de testare. Am nevoie ca validarea și întârzierea să funcționeze împreună.
Răspuns #1
Returnarea valorii primei funcții încheie handler-ul de click. Practic, asta faci în încercarea ta de a combina:
<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>
Iată o opțiune simplă pentru a o corecta:
<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>
Răspunsul #2
Aproape că ai reușit, doar inversează ordinea apelurilor funcției.
<input name="submit" type="submit" class="button" value="Click Here" tabindex="13" onclick="disDelay(this); return ValidateForm(); " />
Returnarea din ValidateForm va face ca restul codului să fie inaccesibil, așa că trebuie să fie ultima.
