谷歌搜索只产生了显示如何禁用表单中每个元素的结果。
如果我有一个绑定了 onsubmit 事件并调用 AJAX 请求的表单,我该如何阻止用户完全提交表单?如果用户提交一次并提出请求,我不希望他们继续提交它提出更多请求,否则会使网站陷入困境。
据我所知,仅禁用提交按钮没有任何作用——您仍然可以在输入文本、电子邮件、密码等中点击“Enter”,并且仍然提交表单。
这在任何浏览器中都可能吗?
编辑
如果 AJAX 请求出现错误并且已完成,我想再次重新启用表单以进行提交。
谷歌搜索只产生了显示如何禁用表单中每个元素的结果。
如果我有一个绑定了 onsubmit 事件并调用 AJAX 请求的表单,我该如何阻止用户完全提交表单?如果用户提交一次并提出请求,我不希望他们继续提交它提出更多请求,否则会使网站陷入困境。
据我所知,仅禁用提交按钮没有任何作用——您仍然可以在输入文本、电子邮件、密码等中点击“Enter”,并且仍然提交表单。
这在任何浏览器中都可能吗?
编辑
如果 AJAX 请求出现错误并且已完成,我想再次重新启用表单以进行提交。
实现这一目标的几种方法:
1)您可以保留一个变量来检测用户之前是否提交过表单(只要确保您在服务器上运行类似的验证。)。然后只需检查变量 OnSubmit() 并对其进行处理或返回 false。
2)从页面中删除 Form 标签 - 不是很优雅,但应该可以解决问题。
HTML
<form id="my-form"></form>
Javascript
var submitted = false;
var form = document.getElementById("my-form");
form.onsubmit = function(){
if(!submitted){
submitted = false;
//some ajax function
}
return false;
}
JS 小提琴:http: //jsfiddle.net/rudaf/