我需要在单击时运行两个函数.即使嵌套在一起,我也无法让它们都工作

I need to run two functions onclick. I can't get them both to work even when nested together

本文关键字:嵌套 在一起 工作 函数 单击 运行 两个      更新时间:2023-09-26

HTML 是:

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

ValidateForm() 函数具有所有常用的表单验证代码。我无法运行的另一个功能(除了它本身工作正常..例

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

我试着把它们都放在点击之后......例

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

我还尝试将一个代码放在同一个函数中,但没有成功。

函数 disDelay() 是

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

它被用作延迟,以防止表单从多次单击中获得重复提交。延迟现在为 10 秒,仅用于测试目的。我需要验证和延迟才能一起工作。

返回第一个函数的值将终止单击处理程序。从本质上讲,这就是您在尝试组合

时所做的:
<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>

这里有一个简单的选项来纠正它:

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

你几乎有了它,只是颠倒了函数调用的顺序。

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

来自 ValidateForm 的返回将导致代码的其余部分无法访问,因此它必须是最后一个。

在 onclick 字符串中,disDelay(this) 没有被调用,因为您返回了来自 ValidateForm() 的响应,因此第二条语句永远不会执行。

如果您绝对必须在 html 中使用 onclick 属性,请尝试:

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