【当服务器超载时,会出现提交卡顿的现象,但是用户在操作时,会不停重复点击提交,会造成服务器压力更大。所以我们需要进行限制】

[1]将提交按钮禁止

<html>

  <head>

    <script>

      //禁止默认行为   因为这里要模拟服务器超载的时候,所以需要先禁止掉submit按钮自动提交的功能

    function preventDef(event){

      event=event||window.event;

      if(event.preventDefault){

        return event.preventDefault;

        }else{

         return event.returnValue=false;

        }

      }

    window.onload=function(){

    var form=document.getElementsByTagName('form')[0];      //获取到form元素

    var txt=form.elements['txt'];                    //获取到name属性为txt的表单元素

    var sub=form.elements['sub'];                    //获取到name属性为sub的表单元素

    form.onsubmit=function(event){                  //创建一个提交事件,因为submit是form来提交事件的,所以我们要禁止也需要通过form来禁止

      event=event || window.event;                  

      preventDef(event);                      //禁止掉默认提交行为

      sub.disabled=true    //第一种就是在用户提交完之后,将按钮禁用不再让用户提交,等待提交完毕之后再释放按钮

      

      setTimeout(function(){                    //模拟5秒钟后再提交

      form.submit()},5000);

    }

}

    </script>

  </head>

  <body>

    <form id="form">

      <input type="text" id="txt" name="txt">

      <input type="submit" id="sub">

    </form>

  </body>

</html>

-------------------------------------------------------------------------------------------------------

[第二种 创建一个变量进行判断]

[1]将提交按钮禁止

<html>

  <head>

    <script>

      //禁止默认行为   因为这里要模拟服务器超载的时候,所以需要先禁止掉submit按钮自动提交的功能

    function preventDef(event){

      event=event||window.event;

      if(event.preventDefault){

        return event.preventDefault;

        }else{

         return event.returnValue=false;

        }

      }

    window.onload=function(){

    var form=document.getElementsByTagName('form')[0];      //获取到form元素

    var txt=form.elements['txt'];                    //获取到name属性为txt的表单元素

    var sub=form.elements['sub'];                    //获取到name属性为sub的表单元素

    var  flag=true;                            //先创建一个变量,表示默认的时候用户还没点击提交

    form.onsubmit=function(event){                  //创建一个提交事件,因为submit是form来提交事件的,所以我们要禁止也需要通过form来禁止

      event=event || window.event;                  

      preventDef(event);                      //禁止掉默认提交行为

      if(flag==true){

          flag=false;                    //表示用户已经点击过提交按钮

      }else{

        alert('正在提交,请勿重复提交');          

      }

      

      setTimeout(function(){                    //模拟5秒钟后再提交

      form.submit()},5000);

    }

}

    </script>

  </head>

  <body>

    <form id="form">

      <input type="text" id="txt" name="txt">

      <input type="submit" id="sub">

    </form>

  </body>

</html>

JavaScript禁止用户多次提交方法的更多相关文章

  1. javascript —— 禁止通过 Enter 键提交表单

    $('btn').on('keydown', function () { return false; })

  2. Linux—禁止用户SSH登录方法总结

    Linux-禁止用户SSH登录方法总结 一.禁止用户登录 1.修改用户配置文件/etc/shadow       将第二栏设置为"*",如下.那么该用户就无法登录.但是使用这种方式 ...

  3. AJAX提交方法(POST)Demon

    AJAX的POST提交方法,本质上来看和GET差不多,有些细小的区别,POST要提交数据时,需要setRequestHeader()方法来提交HTTP头,然后send()方法中提交数据(格式为:&qu ...

  4. php表单提交方法汇总

    问题:网页上提交表单之后,PHP为什么不能获取提交的内容?然而在老版本的PHP上运行却正常. 新版的PHP已经废弃了原来的表单内容处理方式,即不再把提交的表单的内容直接复制到一个同名变量中.解决办法有 ...

  5. jQuery实现form表单基于ajax无刷新提交方法详解

    本文实例讲述了jQuery实现form表单基于ajax无刷新提交方法.分享给大家供大家参考,具体如下: 首先,新建Login.html页面: <!DOCTYPE html PUBLIC &quo ...

  6. ASP.net 实现禁止用户重复登录

    本文先为大家介绍如何利用缓存Cache方便地实现此功能. Cache与Session这二个状态对像的其中有一个不同之处,Cache是一个全局对象,作用的范围是整个应用程序,所有用户:而Session是 ...

  7. wex5 实战 用户点评与提交设计技巧

    最近遇到很多同学做毕业设计,其中有一项是用户点评与提交.功能并不复杂,同学们又不会,做为一个完整的功能,如果用wex5来设计开发,事半功倍.今天就以景区实战来向大家展示wex5的高效与强大.半天可以设 ...

  8. Javascript常用对象的属性和方法

    javascript为我们提供了一些非常有用的常用内部对象和方法.用户不需要用脚本来实现这些功能.这正是基于对象编程的真正目的. 在javascript提供了string(字符串).math(数值计算 ...

  9. php页面防重复提交方法总结

    1.提交按钮置disabled 当用户提交后,立即把按钮置为不可用状态.这种用js来实现. 提交前 复制代码 代码如下:         $("#submit").attr('di ...

随机推荐

  1. DTO学习系列之AutoMapper(二)

    本篇目录: Flattening-复杂到简单 Projection-简单到复杂 Configuration Validation-配置验证 Lists and Array-集合和数组 Nested m ...

  2. Cocos2d-x 3.0 场景切换

    场景切换要用到导演类Director,一般有两种方式,大多数是用替换场景(replaceScene),也可以用进栈(pushScene)出栈(popScene)的方式进行场景的替换. 场景切换代码: ...

  3. org.hibernate.service.jndi.JndiException: Error parsing JNDI name []

    我的hibernate.cfg.xml文件如下: <?xml version="1.0" encoding="UTF-8"?> <!DOCTY ...

  4. 自动生成代码工具【JAVA版】

    发现任何项目无非五类操作:新增.修改.删除.查询详细.查询列表 大多数的服务端基础代码都是相同的,但是每次开发一个新项目都会做很多重复工作,从controller,bean,service,到数据库访 ...

  5. sql 字段先计算后再拿比对的字段进行比对 效率提升100倍

    关于日期索引的使用,不要计算后再对比,否则使用不了索引例如:以下执行不了索引,耗时很大 dywl=# explain analyze SELECT car_bill.billno,car_bill.b ...

  6. WordPress插件制作教程(七): 插件函数之过滤器(Filter)函数

    上一篇对插件函数之动作(Action)函数做了下介绍,这篇在介绍下过滤器(Filters). 过滤器是一类函数,WordPress执行传递和处理数据的过程中,在针对这些数据做出某些动作之前的特定运行( ...

  7. WP Super Cache 安装与设置方法

    1.首先,永久连接不能使用默认格式 2.修改永久链接格式,中文推荐采用 /%post_id%.html (这下你知道我的.orz哪里来了吧) 如果你和我一样蛋疼愿意为每篇文章写一个英语的post sl ...

  8. LoadRunner参数化功能详解

    更新方式: .      Each Occurrence 每次遇到参数就进行更新. 多次使用同一参数,而且没有什么关联,例如随机数. Each Iteration 每次迭代时发生更新. 如果参数出现几 ...

  9. php缓存技术常用函数

    OB缓存系列函数(输出缓存) ob_start()函数:打开输出缓冲区. 函数格式 ob_start(void) 说明:当缓冲区激活时,所有来自PHP程序的非文件头信息均不会发送,而是保存在ob缓冲区 ...

  10. 关于NGINX变量的一些测试结果

    作为NGINX变量,不像正规语言那么正式. 但处理自定义和内部变量时,这些操作,也是少不了的. geo $dollar { default "$"; } server { list ...