You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何判断按钮是否被点击?表单验证函数未触发问题求助

解决表单提交时仅验证指定按钮的问题

我来帮你搞定这个表单验证的问题!你的代码现在不工作,主要是因为判断按钮是否被点击的方式完全错了,还有一些语法小问题需要修正。

问题出在哪?

  • 你用document.getElementById('cmdSubmit').onclick == true来判断按钮是否被点击,这根本不对——onclick属性存储的是绑定的事件函数,不是布尔值,所以这个条件永远不会成立。
  • 你的with (thisform)后面没加花括号,属于语法错误,会导致后续逻辑混乱。
  • 表单的onsubmit事件不管点哪个提交按钮都会触发,所以你需要的是区分触发提交的按钮是谁,而不是判断按钮的点击状态。

修正后的完整代码

我们可以给每个提交按钮添加点击事件,给表单标记一个“提交来源”,然后在验证函数里根据这个标记来决定是否执行验证:

HTML部分

<form name="myForm" method="post" action="ProjectCensus.php" onsubmit="return validateForm(this)">
    <!-- 这里放你的其他表单输入元素 -->
    <input class="button" type="submit" name='cmdSubmit' id="cmdSubmit" value="Submit" onclick="this.form.submittedBy = this.id;" />
    <!-- 如果有其他提交按钮,同样添加标记 -->
    <input class="button" type="submit" name='cmdOther' id="cmdOther" value="其他操作" onclick="this.form.submittedBy = this.id;" />
</form>

JavaScript部分

function validateForm(thisform) {
    let blnReturn = true;
    alert("In validateForm");

    // 仅当点击的是cmdSubmit按钮时执行验证
    if (thisform.submittedBy === 'cmdSubmit') {
        // 这里写你的表单验证逻辑,举个例子:
        // 验证某个必填输入框
        const usernameInput = thisform.querySelector('#username');
        if (!usernameInput.value.trim()) {
            alert('用户名不能为空!');
            blnReturn = false;
        }
        // 其他验证规则...
        // 如果验证不通过,把blnReturn设为false即可
    }

    // 其他按钮触发的提交直接返回true,cmdSubmit则返回验证结果
    return blnReturn;
}

为什么这样可行?

  • 每个提交按钮的onclick事件会把自己的ID赋值给表单的submittedBy属性,这样在onsubmit触发的验证函数里,就能精准知道是哪个按钮触发的提交。
  • 去掉了容易出问题的with语句,直接用thisform访问表单元素,代码更清晰。
  • 完全符合你的需求:只有点击cmdSubmit时才执行验证,验证失败返回false;点击其他按钮直接返回true。

内容的提问来源于stack exchange,提问作者sra2786

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 04:01:09