如何判断按钮是否被点击?表单验证函数未触发问题求助
解决表单提交时仅验证指定按钮的问题
我来帮你搞定这个表单验证的问题!你的代码现在不工作,主要是因为判断按钮是否被点击的方式完全错了,还有一些语法小问题需要修正。
问题出在哪?
- 你用
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
相关产品推荐
相关产品推荐

