前端开发中接触的表单提交还是很多的,有时候如果不对提交事件进行处理的话会遇到重复多次提交。

最近开发遇到一个问题,找了挺久才找到原因解决-_-||,表单一直提交两次,以为是双击重复提交了,就在提交之后禁用提交按钮了,but...

再试还是提交了两次,结果是label包裹input,点击label提交的时候提交两次

经过这次,总结出几条表单重复提交问题查找方向,主要从几个方面来考虑:

第一:如果是点击submit类型的按钮提交表单,就要先看是否是表单的默认提交事件,如果是,禁用默认提交事件(event.preventDefault();)或者改用button类型按钮提交

$('#submit').click(function(e){

e.preventDefault()

})

第二: 如果是点击按钮ajax提交,就要在提交之后禁用掉按钮,以免重复提交,这个在平时各种情况下的表单提交都考虑进去

禁用按钮,加disabled属性,或者加pointer-event:none属性

$('#submit').click(function(){

$.ajax(...)

$(this).attr('disabled,true) // 禁用按钮or

$(this).css('pointer-event','none') // 来禁用点击事件

})

第三: 如果是点击选项提交,那么就要考虑label和input的关联问题了,点击label, 事件冒泡,input也会触发一次提交

可以这样来处理

$('label').click(function(e) {if($(e.target).is('input')){ //点击label的时候,如果事件源是input,那么就把它禁用掉

return;

}

});

html 重复提交表单,表单重复提交问题的三种解决思路相关推荐

  1. MapperException: 无法获取实体类xxxxx对应的表名! 三种解决方法,总有一款适合你。

    MapperException: 无法获取实体类xxxxx对应的表名! 三种解决方法,总有一款适合你. 参考文章: (1)MapperException: 无法获取实体类xxxxx对应的表名! 三种解 ...

  2. oracle数据迁移过程中,把表中数据导出为txt文件的三种方法

    在数据迁过程中需求需要将oracle数据库数据导出程txt格式然后再导入db2库中,经查询实验汇总三种方法: 1.plsqldev 里面有一个选项可以把表以excel格式到时 2.使用spool sq ...

  3. SPA优缺点、解决单页面应用的SEO困难问题以及三种网页渲染方式

    SPA特点优点缺点总结 1. 单页Web应用(SPA - Single Page web Application) 也就是说只有一个HTML文件的Web应用, 我们就称之为单页Web应用, 就称之为S ...

  4. java 文本域不可编辑_实现表单input文本框不可编辑的三种方法

    问题 有时,我们需要以不可编辑的模式显示表单域,那么如何实现?我们可以通过为表单字段(input文本框,标签,复选框,文本区域)设置以下方法来实现表单的不可编辑功能. 实现方式 1.οnfοcus=t ...

  5. hive表分区上传数据出现的一个问题及解决思路

    hive表分区用load上传数据时, 出现了 报错: Failed with exception MetaException(message:For direct MetaStore DB conne ...

  6. 避免重复运行py文件绘制海龟图报错的一种解决办法

    文章目录 -问题描述: -通过按键释放事件响应来避免报错 -总结 -问题描述: 使用Python 3.7.6中的turtle库绘制海龟图,首次运行py文件,在弹窗上的海龟图成功绘制完后,点击弹窗右上角 ...

  7. 【重复提交表单】表单重复提交的三种情况,解决办法

    引入 看一个重复提交表单的例子 F12可以看到,请求体中的参数在刷新页面之后仍然保留,因此每一次刷新页面,都会把现有的请求体中的表单数据提交一次到服务器,而接收的页面还是insert.jsp,于是造成 ...

  8. 数据库——数据库表和表的操作

    每日一讲 SQL语句 SQL语句分类 SQL书写规范 数据库操作 查看 创建 MySQL字符集 ci大小写不敏感,cs大小写敏感, 在Linux下配置MySQL utf8与utf8mb4的区别 数据库 ...

  9. oracle多表联合查询更新,ORACLE 两表关联更新三种方式

    不多说了,我们来做实验吧. 创建如下表数据 select * from t1 ; select * from t2; 现需求:参照T2表,修改T1表,修改条件为两表的fname列内容一致. 方式1,u ...

最新文章

  1. 【软考-软件设计师】校验码
  2. webview 修改html,使用自定义CSS在WebView中呈现HTML
  3. HMAC-SHA1加密
  4. java 基本数据类型及自己主动类型提升
  5. layui 分页 固定底部_论layui的使用体验
  6. ~~~~~~~~~~~~~~坏公司鉴别方法 ~~~~~~~~~~~
  7. matlab矩阵基本操作,Matlab入门----矩阵的基本操作
  8. 07_支持向量机2_统计学习方法
  9. easyui tree设置选中节点的方法
  10. 自动驾驶——标注工具(js+electron)的开发笔记(基于Create-React-App)
  11. 浏览文件服务器,浏览文件服务器
  12. Android ListView示例教程
  13. RGB颜色转16进制颜色
  14. oracle价格的数据类型,oracle数据库中的number类型
  15. 上交计算机就业报告,上海交通大学计算机研究生去向及就业情况分析
  16. 路由器 OSPF 路由汇总配置
  17. Android实现高德地图POI搜索
  18. python:分隔符
  19. 被Win10自带杀毒软件自动误删除的exe从这里找
  20. 西瓜视频这20亿,砸的是什么?

热门文章

  1. python 创建空的numpy数组_Numpy入门教程:01. 数组的创建与属性
  2. Django入门-项目创建与初识子应用
  3. 深化对KMP算法的理解
  4. Xshell操控kali-linux虚拟机
  5. 问题 G: 果汁店的难题(贪心)
  6. 如何量化技术团队的效能?
  7. AnalyticDB MySQL拥抱云原生,强力支撑双十一
  8. 小伙用智能 AI 修复100 年前京城的老视频
  9. 如何打造智能化的员工出行方式?阿里自研出行神器首次曝光
  10. python读取excel生成mysql建表语句_python读取excel文件并自动在mysql中建表导数据