Javascript 我的Onclick处理程序返回false,但我的表单仍然提交
我有一个带有提交按钮的表单,并通过onclick=..附加了一个验证器。。。。当我单击submit按钮时,验证程序被执行并返回false。不过,表格还是提交了。这怎么可能 为了进一步缩小问题范围,我甚至临时将代码更改为:Javascript 我的Onclick处理程序返回false,但我的表单仍然提交,javascript,html,forms,Javascript,Html,Forms,我有一个带有提交按钮的表单,并通过onclick=..附加了一个验证器。。。。当我单击submit按钮时,验证程序被执行并返回false。不过,表格还是提交了。这怎么可能 为了进一步缩小问题范围,我甚至临时将代码更改为: <form id="contactform" method="post" action="cgi-bin/process_contact_form.rb"> .... <input type="submit" value="Abschicken
<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
铬36.0
当然,JavaScript是启用的
具有上述错误快捷方式的测试页面可在此处看到:
它有两个按钮。标签为Abschicken的第一个按钮是表单中的按钮。其onclick处理程序返回false,但表单仍在提交中。您缺少return语句:
<input type="submit" value="Abschicken" onclick="return k_validate('de')" />
您缺少返回语句:
<input type="submit" value="Abschicken" onclick="return k_validate('de')" />
…这意味着onclick函数返回undefined,这将不会阻止默认操作。我确实需要在onclick中返回“return”只在函数中使用,我想。顺便说一句,我在这里遵循了这个示例,它也没有使用返回:只是测试了它。有了回报,它就成功了!非常感谢。。。。我只是学会了不要盲目地相信教程;-…这意味着onclick函数返回undefined,这不会阻止默认操作。我确实需要在onclick中返回“return”只在函数中使用,我想。顺便说一句,我在这里遵循了这个示例,它也没有使用返回:只是测试了它。有了回报,它就成功了!非常感谢。。。。我只是学会了不要盲目地相信辅导-如果使用OR运算符false | | X总是返回X,那么如果LHS已经为false,则不计算RHS,因为false&&X总是为false,与X的值无关。实际上,我也可以编写onclick=false。以这种方式编辑更容易,因为最终,我当然计划删除'false&&',并让我的验证器运行。如果使用OR运算符,则会出现这种情况false | | X始终返回X。如果LHS已经为false,则不评估RHS,因为false&&X始终为false,与X的值无关。实际上,我也可以写onclick=false。以这种方式编辑更容易,因为最终,我当然计划删除'false&&',让我的验证器运行。