为超链接加上disabled后的故事


Posted in Javascript onDecember 10, 2010

场情:

一张页面中原来有一个超链接按钮,点击后可以获取到短信认证码。如

<a href="javascript:reciverSms()">获取短信认证码</a> 
<script type="text/javascript"> 
function reciverSms(){ 
var sms = getSmsCode(); 
} 
</script>

但是考虑到频繁点击获取认证码,对相关设备的压力,就做了一个点击5秒后才允许再点击的逻辑,于是又来了下一个版本
function reciverSms(obj){ 
var sms = getSmsCode(); 
obj.disabled = true; 
windows.setTimeout(function(){ 
obj.disabled = false; 
},5000); 
}

代码逻辑很简单,获取一次短信后,链接禁用5秒。可是没有想的事情又来了,原来超链接禁用了后虽然样子变成禁用了,但是还是可以点击的,原来是个陷阱,于是又来了第三个版本
function reciverSms(obj){ 
if(obj.disabled){ 
return; 
} 
var sms = getSmsCode(); 
obj.disabled = true; 
windows.setTimeout(function(){ 
obj.disabled = false; 
},5000); 
}

至此这个功能因该是算做好了,可是还有一件令我想不的事,之前说超连接disabled属性为true时,表现出来的样子是灰色不可用状态,但这里有个特例,如果这个超链接被设置了

color的css属性样式,在非ie浏览器上表现出来的样子就不是禁用了,终于看到ie的好了。于是第四个版本出现了。

function reciverSms(obj){ 
if(obj.disabled){ 
return; 
} 
var sms = getSmsCode(); 
obj.disabled = true; 
addClass(obj,"gray"); 
windows.setTimeout(function(){ 
obj.disabled = false; 
removeClass(obj,"gray"); 
},5000); 
}

通过一步步的改进,一个芝麻功能终于完成了。例子虽小,但却给了我很多思考。
Javascript 相关文章推荐
js下弹出窗口的变通
Apr 18 Javascript
javascript实现的动态添加表单元素input,button等(appendChild)
Nov 24 Javascript
javascript web页面刷新的方法收集
Jul 02 Javascript
JQuery-tableDnD 拖拽的基本使用介绍
Jul 04 Javascript
控制文字内容的显示与隐藏示例
Jun 11 Javascript
javascript判断并获取注册表中可信任站点的方法
Jun 01 Javascript
jQuery实现的鼠标经过时变宽的效果(附demo源码)
Apr 28 Javascript
jquery datatable服务端分页
Aug 31 Javascript
JQueryEasyUI之DataGrid数据显示
Nov 23 Javascript
jQuery实现返回顶部按钮和scroll滚动功能[带动画效果]
Jul 05 jQuery
angularjs2 ng2 密码隐藏显示的实例代码
Aug 01 Javascript
node脚手架搭建服务器实现token验证的方法
Jan 20 Javascript
input按钮的事件处理大全
Dec 10 #Javascript
JavaScript(JS) 压缩 / 混淆 / 格式化 批处理工具
Dec 10 #Javascript
js下关于onmouseout、事件冒泡的问题经验小结
Dec 09 #Javascript
客户端限制只能上传jpg格式图片的js代码
Dec 09 #Javascript
Javascript将string类型转换int类型
Dec 09 #Javascript
IE6下CSS图片缓存问题解决方法
Dec 09 #Javascript
web前端开发也需要日志
Dec 09 #Javascript
You might like
探讨:array2xml和xml2array以及xml与array的互相转化
2013/06/24 PHP
php自定义apk安装包实例
2014/10/20 PHP
PHP中浮点数计算比较及取整不准确的解决方法
2015/01/09 PHP
Zend Studio使用技巧两则
2016/04/01 PHP
php 从指定数字中获取随机组合的简单方法(推荐)
2017/04/05 PHP
return false;和e.preventDefault();的区别
2010/07/11 Javascript
javascript与cookie 的问题详解
2013/11/11 Javascript
javascript实现回车键提交表单方法总结
2015/01/10 Javascript
JQuery基础语法小结
2015/02/27 Javascript
JS判断字符串包含的方法
2015/05/05 Javascript
基于JavaScript判断浏览器到底是关闭还是刷新(超准确)
2016/02/01 Javascript
详解AngularJS中的http拦截
2016/02/09 Javascript
Backbone.js框架中简单的View视图编写学习笔记
2016/02/14 Javascript
Vuejs第十一篇组件之slot内容分发实例详解
2016/09/09 Javascript
利用HBuilder打包前端开发webapp为apk的方法
2017/11/13 Javascript
详解Node.js中的Async和Await函数
2018/02/22 Javascript
Vuejs学习笔记之使用指令v-model完成表单的数据双向绑定
2019/04/29 Javascript
vue+axios实现post文件下载
2019/09/25 Javascript
Python标准库之随机数 (math包、random包)介绍
2014/11/25 Python
Python中循环引用(import)失败的解决方法
2018/04/22 Python
Python中turtle库的使用实例
2019/09/09 Python
基于Html5实现的语音搜索功能
2019/05/13 HTML / CSS
次世代生活态度:Hypebeast
2018/07/05 全球购物
英国哈罗德园艺:Harrod Horticultural
2020/03/31 全球购物
后勤人员自我鉴定
2013/10/20 职场文书
单位实习证明怎么写
2014/01/17 职场文书
企业员工培训感言
2014/02/26 职场文书
关于爱国的演讲稿
2014/05/07 职场文书
预备党员综合考察材料
2014/05/31 职场文书
2015年爱牙日活动总结
2015/03/23 职场文书
2015年班长个人工作总结
2015/04/03 职场文书
新教师2015年度工作总结
2015/07/22 职场文书
2016应届毕业生实习评语
2015/12/01 职场文书
大学生,三分钟即兴演讲稿
2019/07/22 职场文书
CSS3实现的水平标题菜单
2021/04/14 HTML / CSS
Z-Order加速Hudi大规模数据集方案分析
2022/03/31 Servers