有没有办法截取html表单的onsubmit事件?在我的web应用程序中,有几个包含表单等的屏幕。我们面临的问题是,当用户多次按下任何按钮时,服务器会因相同的请求而超载。有些表单已经附加了事件处理程序(如onSubmit、button.onClick等)。一种方法是通过遍历所有屏幕来“注入”我的按钮禁用代码。
但我正在寻找的是一个通用的解决方案,可以应用于所有的屏幕上,只需包括脚本的地方编写的函数。
我知道我可以使用jQuery (为表单捕获onSubmit )来设置回调,但在这种情况下的问题是,如果任何屏幕已经注册了onSubmit,它可能不会被调用。
在这方面的任何帮助都很感谢!
发布于 2012-01-19 16:44:40
我认为这段代码是一个很好的起点。它应该放在单独的文件中,并包含在你想要使用它的地方(如果你有全局的脚本列表-这是一个很好的地方)
var suppressed_items = [];
function allowOnlyOne(item,e){
if (jQuery.inArray(item, suppressed_items)==-1){
//hi little item, I haven't saw you before, please go on... but I remember you
suppressed_items.push(item);
return true;
}
else{
//Hey, you have been submitted already, stay where you are!
return false; //or e.preventDefault(), it's a matter of faith :)
}
}
jQuery(document).ready(function(){
//don't worry, it won't replace your `ready` handlers, but just append new handler
jQuery("from").submit(function(e){
return allowOnlyOne(jQuery(this),e);
});
});您可以对任何您想要的项目使用allowOnlyOne函数。因此,例如,为了允许单击所有超链接,在ready处理程序中添加:
jQuery("a").click(e){
return allowOnlyOne(jQuery(this),e);
}我希望你能理解这个基本概念:捕捉事件,获取触发它的元素的ID,将它和事件一起提供给AllowOnlyOne。
当然,您可以将其全部封装到自动执行的闭包中,以实现封装等功能。
发布于 2012-01-19 16:26:57
如果你已经有jQuery了,我建议你使用它。您需要做的就是确保表单的onsubmit没有"return false“,否则它会在提交时阻塞jQuery。
这是你需要做的:
的代码
https://stackoverflow.com/questions/8922887
复制相似问题