Javascript 返回 false 在 ie 中不起作用
大家好,
我的 JSP 中有以下几行。
<s:submit name="submit" onclick="return validateUser();" action="saveUser" theme="simple" value="Save" />
java 脚本方法 validateUser() 验证用户并返回 true 或 false。验证失败时不应提交表单。
这在 FF 中有效,但在 IE8 中无效。
即使验证失败,IE8 也会提交表单。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
永远不要假设您可以取消提交按钮,而是在表单上设置一些 javascript 变量或隐藏字段并使用 onsubmit。相信我的话。让 onsubmit 查看由不同提交按钮设置的变量
切勿使用 javascript:(javascript 冒号),除非您使用的是 IE 并且将 VBScript 作为页面上的第一个脚本。在所有其他情况下,javascript 都是默认的。
切勿使用诸如
之类的暴行,而不是
最后,在 IE 中,当发生错误时,默认操作是提交表单,您很可能在其他地方完全出现其他错误,并让验证返回错误,该错误被视为 true(0 计算结果为 false,大多数其他内容都是正确的)
Never assume you can cancel the submit button, instead set some javascript variable or hidden field on the form and use onsubmit. Take my word for it. Have the onsubmit look at the variable set by the different submit buttons
Never use javascript: (javascript colon) unless you are in IE and have a VBScript as the first script on the page. In all other cases javascript is default.
Never use such atrocities as
<a href="javascript:something()"
instead of<a href="#" onclick="return something()
Lastly, in IE, when you have an error occurring, the default action is to submit the form. You may very well have other errors completely elsewhere and have the validate return the error, which is seen as true (0 evaluates to false, most anything else is true)
首先,可以执行多个操作的单个表单是一个坏主意,也就是说......
不要使用提交按钮:
现在您只需担心表单的默认提交行为(当用户在字段中按 Enter 时) 。
First, a single form that can perform multiple actions is a bad idea, that said...
Do not use submit buttons, instead:
Now you only have to worry about default submit behaviour of a form (when user presses enter in a field).
您唯一需要更改的是
validateUser()
函数。IE 正在寻找事件的返回值,因此您需要指定:
Only thing you need to change is in your
validateUser()
function.IE is looking for the return value on the event, so you need to specify this:
请注意,如果 validateUser() 或 deleteUser() 中存在错误或错误,则“return false”将不会停止锚点操作,并且您的浏览器将尝试链接到 href“subaction”。逻辑如下:
如果您依赖第三方 JavaScript API(我使用 Recyclebank 提供的代码来生成弹出窗口),并且第三方 API 进行的更新破坏了 JavaScript,那么您将会遇到问题。
以下将在正常情况和错误情况下停止链接。
Please note that if there is a bug or error in validateUser() or deleteUser() then "return false" will NOT stop the anchor action and your browser will try to link to the href "subaction". Here is the logic:
If you are relying on a third party JavaScript API (I was using code supplied by Recyclebank to spawn a popup), and the third party API makes an update that breaks the JavaScript, then you'll have problems.
The following will stop the link under normal conditions and error conditions.