Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我的Onclick处理程序返回false,但我的表单仍然提交_Javascript_Html_Forms - Fatal编程技术网

Javascript 我的Onclick处理程序返回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

我有一个带有提交按钮的表单,并通过onclick=..附加了一个验证器。。。。当我单击submit按钮时,验证程序被执行并返回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 铬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&&',让我的验证器运行。