我的Onclick处理程序返回false,但我的表单仍然提交

时间:2014-09-10 10:16:15

标签: javascript html forms

我有一个带有提交按钮的表单,并通过onclick = ....附加了一个验证器。当我点击提交按钮时,验证器被执行并返回false。表格仍然提交。怎么会这样?

为了进一步缩小问题,我甚至将代码暂时更改为:

<form id="contactform" method="post" action="cgi-bin/process_contact_form.rb">
    ....
    <input type="submit" value="Abschicken" onclick="false && k_validate('de')" />
</form>

这只会返回false并绕过我的验证器。实际上,即使在这个版本中,表单也会被提交。

请注意,我知道有办法通过绕过验证器来提交表单。我在这里只对“正常”情况感兴趣,即当用户明确点击按钮时。

我已在Mac OSX 10.6.8上使用以下浏览器对此进行了测试:

SeaMonkey 2.0.14 Safari 5.1.10 Chrome 36.0

当然,启用了JavaScript。

可以在此处看到带有上述“假”快捷方式的测试页:

http://www.tsukaeru-doitsugo.de/testing.html

它有两个按钮。第一个按钮(标记为“Abschicken”)是表单中的按钮。它的onclick处理程序返回false,但表单仍然提交。

1 个答案:

答案 0 :(得分:5)

你错过了return语句:

<input type="submit" value="Abschicken" onclick="return k_validate('de')" />