javascript - Jag behöver köra två funktioner vid onclick. Jag kan inte få dem båda att fungera även när de är nästlade tillsammans
HTML-koden är:
<input name="submit"
type="submit"
class="button"
value="Click Here"
tabindex="13"
onclick="return ValidateForm();" />
Funktionen ValidateForm() har all den vanliga koden för formulärvalidering. Den andra funktionen kan jag inte få att köra (utom för sig själv fungerar den bra..exempel
<input name="submit"
type="submit"
class="button"
value="Click Here"
tabindex="13"
onclick="disDelay(this);" />
Jag försökte sätta dem båda efter onclick...exempel
<input name="submit"
type="submit"
class="button"
value="Click Here"
tabindex="13"
onclick="return ValidateForm(); disDelay(this);" />
Jag försökte också lägga in koden i samma funktion utan framgång.
Funktionen disDelay() är
function disDelay(obj){
obj.setAttribute('disabled','disabled');
setTimeout(function(){obj.removeAttribute('disabled')},10000);
}
Det ska användas som en fördröjning för att förhindra att formuläret får dubbla inskickningar från flera klick. Fördröjningen är just nu på 10 sekunder bara för teständamål. Jag behöver att valideringen och fördröjningen fungerar tillsammans.
Svar #1
Att returnera värdet av den första funktionen avslutar klickhanteraren. I princip är det detta du gör i ditt försök att kombinera:
<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>
Här är ett enkelt alternativ för att rätta till det:
<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>
Svar #2
Du hade det nästan, bara vänd på ordningen av funktionsanropen.
<input name="submit" type="submit" class="button" value="Click Here" tabindex="13" onclick="disDelay(this); return ValidateForm(); " />
Returen från ValidateForm kommer att göra resten av koden oåtkomlig, så den måste vara sist.
