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,但仍然提交了表单.
你错过了return语句:
<input type="submit" value="Abschicken" onclick="return k_validate('de')" />
Run Code Online (Sandbox Code Playgroud)