首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >截取表单onSubmit

截取表单onSubmit
EN

Stack Overflow用户
提问于 2012-01-19 16:15:52
回答 2查看 3.6K关注 0票数 3

有没有办法截取html表单的onsubmit事件?在我的web应用程序中,有几个包含表单等的屏幕。我们面临的问题是,当用户多次按下任何按钮时,服务器会因相同的请求而超载。有些表单已经附加了事件处理程序(如onSubmit、button.onClick等)。一种方法是通过遍历所有屏幕来“注入”我的按钮禁用代码。

但我正在寻找的是一个通用的解决方案,可以应用于所有的屏幕上,只需包括脚本的地方编写的函数。

我知道我可以使用jQuery (为表单捕获onSubmit )来设置回调,但在这种情况下的问题是,如果任何屏幕已经注册了onSubmit,它可能不会被调用。

在这方面的任何帮助都很感谢!

EN

回答 2

Stack Overflow用户

发布于 2012-01-19 16:44:40

我认为这段代码是一个很好的起点。它应该放在单独的文件中,并包含在你想要使用它的地方(如果你有全局的脚本列表-这是一个很好的地方)

代码语言:javascript
复制
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处理程序中添加:

代码语言:javascript
复制
jQuery("a").click(e){
    return allowOnlyOne(jQuery(this),e);
}

我希望你能理解这个基本概念:捕捉事件,获取触发它的元素的ID,将它和事件一起提供给AllowOnlyOne

当然,您可以将其全部封装到自动执行的闭包中,以实现封装等功能。

票数 2
EN

Stack Overflow用户

发布于 2012-01-19 16:26:57

如果你已经有jQuery了,我建议你使用它。您需要做的就是确保表单的onsubmit没有"return false“,否则它会在提交时阻塞jQuery。

这是你需要做的:

  1. 从表单的onsubmit (如果有)中删除任何return false。不要担心,我们稍后会在jQuery中处理这个问题。
  2. 会在您的窗体中添加一个类...就像"disableOnSubmit“一样。Example:
  3. Implement类似于:

的代码

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8922887

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档