Html 是否可以禁用<;表格>;JavaScript中的元素?

Html 是否可以禁用<;表格>;JavaScript中的元素?,html,forms,javascript,Html,Forms,Javascript,谷歌搜索结果只显示了如何禁用表单中的每个元素 如果有一个绑定了onsubmit事件的表单调用AJAX请求,如何阻止用户完全提交表单?如果一个用户提交一次请求,我不希望他们继续提交请求,否则会使网站陷入困境 据我所知,仅禁用submit按钮并没有任何作用——您仍然可以在输入文本、电子邮件、密码等中点击“回车”,表单仍然被提交 这在任何浏览器中都可能吗 编辑 如果AJAX请求有错误并且完成了,我想再次启用表单以进行提交。HTML <form id="my-form"></form&

谷歌搜索结果只显示了如何禁用表单中的每个元素

如果有一个绑定了onsubmit事件的表单调用AJAX请求,如何阻止用户完全提交表单?如果一个用户提交一次请求,我不希望他们继续提交请求,否则会使网站陷入困境

据我所知,仅禁用submit按钮并没有任何作用——您仍然可以在输入文本、电子邮件、密码等中点击“回车”,表单仍然被提交

这在任何浏览器中都可能吗

编辑

如果AJAX请求有错误并且完成了,我想再次启用表单以进行提交。

HTML

<form id="my-form"></form>
jsfiddle:

HTML

<form id="my-form"></form>
var submitted = false;
var form = document.getElementById("my-form");
form.onsubmit = function(){
   if(!submitted){
       submitted = false;
       //some ajax function
   }

   return false;
}

JS Fiddle:实现这一点的两种方法:

var submitted = false;
var form = document.getElementById("my-form");
form.onsubmit = function(){
   if(!submitted){
       submitted = false;
       //some ajax function
   }

   return false;
}
1) 您可以保留一个变量来检测用户以前是否提交过表单(只需确保在服务器上运行类似的验证)。然后只需检查变量OnSubmit(),然后处理它或返回false


2) 从页面中删除表单标签-虽然不是很优雅,但应该可以做到这一点

实现这一目标的两种方法:

1) 您可以保留一个变量来检测用户以前是否提交过表单(只需确保在服务器上运行类似的验证)。然后只需检查变量OnSubmit(),然后处理它或返回false


2) 从页面中删除表单标签-虽然不是很优雅,但应该可以做到这一点

if(this.isSubmitted)返回false;this.issubmitt=true
if(this.isSubmitted)返回false;this.issubmitt=true
那么重新设置发送请求的onsubmit事件呢?只是把它的属性值存储在一个变量中?我不知道你重新设置onsubmit事件是什么意思。您能详细说明一下吗?如果我有表单onsubmit=“whatever”,但随后将其设置为“return false”;就像您所指出的,如果用户再次提交,我如何让“whatever”再次执行?从您的问题来看,您似乎不想提交表单。相反,您希望触发ajax请求<代码>如何阻止用户完全提交表单
我的错误。我忘了补充一点,我希望在请求发出/出现错误后能够再次提交该请求。但是,如何重新设置发送请求的onsubmit事件呢?只是把它的属性值存储在一个变量中?我不知道你重新设置onsubmit事件是什么意思。您能详细说明一下吗?如果我有表单onsubmit=“whatever”,但随后将其设置为“return false”;就像您所指出的,如果用户再次提交,我如何让“whatever”再次执行?从您的问题来看,您似乎不想提交表单。相反,您希望触发ajax请求<代码>如何阻止用户完全提交表单我的错误。我忘了补充一句,我希望在请求发出/出现错误后能够再次提交它。我在考虑#1,但不确定这是否是一种好的方式。是的,这绝对是一种可靠的方式-只需确保您的服务器也进行验证,因为用户可以在本地操作JS。我在考虑#1,但是我不确定这是否是一种很好的方法。是的,这绝对是一种很好的方法——只要确保你的服务器也进行了验证,因为用户可以在本地操作JS。