A标签/按钮防止重复提交&页面Loading制作
【实现原理】
防止重复提交与页面的提交时的Loading设置,均是在提交,但是尚未处理完成进行的操作,且提交为异步提交(同步提交不需要考虑)。因此,其实现原理是在点击按钮或A标签时,将按钮/A标签置为不可用,在提交完成的回调函数中再将按钮/A标签置为可用;Loading原理是在点击提交时,生成Loading样式,在提交完成之后隐藏该样式。
[同步]:提交请求->等待服务器处理->处理完毕返回 这个期间客户端浏览器不能干任何事
[异步]:请求通过事件触发->服务器处理(这是浏览器仍然可以作其他事情)->处理完毕
【按钮防止重复提交】
function save(){
$('#submit').attr("disabled",true);
//或者$('#submit').attr("disabled","disabled");
$.post(url, params, function (data) {
$('#submit').attr("disabled",false);
//或者$('#submit').removeAttr("disabled");
//或者$('#submit').attr("disabled","");
});
}
OS:原生Js处理:document.getElementById("submit").disabled = true;
【A标签防止重复提交】
需注意的是,A标签是没有disabled属性的,所以用按钮的方法控制A标签的提交是不起作用的。
//全局变量
var save_flag = true; function save(){
save_flag = false;
$.post(url, params, function (data) {
save_flag = true;
//........其余代码
});
}
这种方法在按钮的防止提交中也可以使用,总的来说是一种通用、简易的方法。
【Loading】
CSS中:
<style>
#loading {
position: fixed;
width:500px;
top:50%;
left:50%;
margin: -25px -250px;
background-color:#FFFFFF;
border:1px solid #CCCCCC;
text-align:center;
padding:25px;
}
</style>
HTML中:
<div id="loading" style="display: none" ><img style="vertical-align: middle;" src="data:images/loading.gif" />Loading...</div>
JS代码:
function save(){
$("#loading").css("display","");
$.post(url, params, function (data) {
$("#loading").css("display","none");
//........其余代码
});
}
转载请注明出处:
http://www.cnblogs.com/llicat/
A标签/按钮防止重复提交&页面Loading制作的更多相关文章
- ajax 禁用按钮防止重复提交
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- 关于Asp.Net中避免用户连续多次点击按钮,重复提交表单的处理
Web页面中经常碰到这类问题,就是客户端多次点击一个按钮或者链接,导致程序出现不可预知的麻烦. 客户就是上帝,他们也不是有意要给你的系统造成破坏,这么做的原因很大一部分是因为网络慢,点击一个操作之后, ...
- 利用struts2<s:token>标签防止用户重复提交
当用户填写完表单后,在提交过一次后,若用户做如下操作比如再次点击提交.刷新页面.提交页面呈现后点击后退按钮,都会导致表单重复提交.如果信息需要存储到后台数据库中,重复提交就会再次向数据库中插入用户信息 ...
- 防止按钮button重复提交,点击后失效,10秒后恢复
<script type="text/javascript"> $(function () {//页面完全加载完后执行 /*防止重复提交 10秒后恢复*/ var is ...
- asp.net 禁用按钮防止重复提交
按钮设置 1.OnClientClick属性为”this.disabled=true;“ 2.UseSubmitBehavior属性为”false“ 举例如下: <asp:Button ID=& ...
- js按钮 防重复提交
给html 按钮加id属性 例: <button id="addBtn" onclinck="check()"> </button&g ...
- 12、Struts2表单重复提交
什么是表单重复提交 表单的重复提交: 若刷新表单页面, 再提交表单不算重复提交. 在不刷新表单页面的前提下: 多次点击提交按钮 已经提交成功, 按 "回退" 之后, 再点击 &qu ...
- [原创]java WEB学习笔记73:Struts2 学习之路-- strut2中防止表单重复提交
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- struts2 文件的上传下载 表单的重复提交 自定义拦截器
文件上传中表单的准备 要想使用 HTML 表单上传一个或多个文件 须把 HTML 表单的 enctype 属性设置为 multipart/form-data 须把 HTML 表单的method 属性设 ...
随机推荐
- C#基础整理(一)
1.什么是.net? .net有.net平台和.Net Framework框架. .net平台是包含.net framework框架. framework框架提供稳定的运行环境来保证基于.Net平台开 ...
- 文件下载—SSH框架文件下载
1.准备下载的api组件 <dependency> <groupId>commons-io</groupId> <artifactId>commons- ...
- VS2010/MFC编程入门之九(对话框:为控件添加消息处理函数)
创建对话框类和添加控件变量在上一讲中已经讲过,这一讲的主要内容是如何为控件添加消息处理函数. MFC为对话框和控件等定义了诸多消息,我们对它们操作时会触发消息,这些消息最终由消息处理函数处理.比如我们 ...
- ng-深度学习-课程笔记-17: 序列模型和注意力机制(Week3)
1 基础模型(Basic models) 一个机器翻译的例子,比如把法语翻译成英语,如何构建一个神经网络来解决这个问题呢? 首先用RNN构建一个encoder,对法语进行编码,得到一系列特征 然后用R ...
- docker 删除所有的 docker ps -a 记录
docker rm `docker ps -a -q` 删除的是镜像运行的实例,要删除镜像用docker rmi + 镜像名或者那串字符(image id)
- react 修改循环列表的当前单个子项状态:思路 拿原始state数据更改,再做请求
handleLike(item,index){ var id = item.id; _ENV.post( _ENV.HOST+'/communion/video-up', {'user_id':loc ...
- Float类型出现舍入误差的原因(round 取位)
在练习时,输入如下代码: 结果不准确. 原因:https://blog.csdn.net/bitcarmanlee/article/details/51179572 浮点数一个普遍的问题就是在计算机的 ...
- UVA 11019 Matrix Matcher(二维hash + 尺取)题解
题意:在n*m方格中找有几个x*y矩阵. 思路:二维hash,总体思路和一维差不太多,先把每行hash,变成一维的数组,再对这个一维数组hash变成二维hash.之前还在想怎么快速把一个矩阵的hash ...
- 【建项目】eclipse maven建立多模块工程
在工作的时候,大多时候都是用Maven来管理项目,可是一般我们都知道怎么用maven管理工程,却不知道通过Maven自己来建立多模块工程.于是自己抽时间,在网上找些资料,做了起来. 建立简单的Mave ...
- 获取lambda表达式类型,获取attributes是注意事项
1.获取lambda表达式的MemberExpression所属类的类型,要使用:m.Expression.Type 而不要使用 m.Member.DeclaringType: 后者获取的是实际定 ...