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

use*_*428 0 html javascript 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>
Run Code Online (Sandbox Code Playgroud)

这只会返回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,但仍然提交了表单.

Esk*_*sko 5

你错过了return语句:

<input type="submit" value="Abschicken" onclick="return k_validate('de')" />
Run Code Online (Sandbox Code Playgroud)