为超链接加上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写的贪吃蛇游戏(个人练习)
Jul 08 Javascript
Underscore.js 1.3.3 中文注释翻译说明
Jun 25 Javascript
jQuery动态添加可拖动元素完整实例(附demo源码下载)
Jun 21 Javascript
js 转json格式的字符串为对象或数组(前后台)的方法
Nov 02 Javascript
详解支持Angular 2的表格控件
Jan 19 Javascript
canvas实现钟表效果
Feb 13 Javascript
快速使用node.js进行web开发详解
Apr 26 Javascript
bootstrap daterangepicker汉化以及扩展功能
Jun 15 Javascript
使用Vue.observable()进行状态管理的实例代码详解
May 26 Javascript
vue中的过滤器实例代码详解
Jun 06 Javascript
解决vue 表格table列求和的问题
Nov 06 Javascript
JavaScript中的宏任务和微任务详情
Nov 27 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
ajax php传递和接收变量实现思路及代码
2012/12/19 PHP
PHP基于数组实现的分页函数实例
2014/08/20 PHP
PHP实现基于mysqli的Model基类完整实例
2016/04/08 PHP
PHP微信开发之根据用户回复关键词\位置返回附近信息
2016/06/24 PHP
JavaScript实现获得所有兄弟节点的方法
2015/07/23 Javascript
javascript实现dom元素可拖动
2016/03/21 Javascript
jQuery控制元素隐藏和显示
2017/03/03 Javascript
vue.js实现数据动态响应 Vue.set的简单应用
2017/06/15 Javascript
深入探究angular2 UI组件之primeNG用法
2017/07/26 Javascript
Vue的Flux框架之Vuex状态管理器
2017/07/30 Javascript
JQuery 选择器、DOM节点操作练习实例
2017/09/28 jQuery
Vue打包后出现一些map文件的解决方法
2018/02/13 Javascript
让Vue也可以使用Redux的方法
2018/05/23 Javascript
vue1.0和vue2.0的watch监听事件写法详解
2018/09/11 Javascript
解决vue中虚拟dom,无法实时更新的问题
2018/09/15 Javascript
使用 electron 实现类似新版 QQ 的登录界面效果(阴影、背景动画、窗体3D翻转)
2018/10/23 Javascript
angularjs通过过滤器返回超链接的方法
2018/10/26 Javascript
微信小程序用户拒绝授权的处理方法详解
2019/09/20 Javascript
Vue自动构建发布脚本的方法示例
2020/07/24 Javascript
vue 扩展现有组件的操作
2020/08/14 Javascript
Vue 防止短时间内连续点击后多次触发请求的操作
2020/11/11 Javascript
解决vue下载后台传过来的乱码流的问题
2020/12/05 Vue.js
python开发中module模块用法实例分析
2015/11/12 Python
Django基于ORM操作数据库的方法详解
2018/03/27 Python
python训练数据时打乱训练数据与标签的两种方法小结
2018/11/08 Python
Python中使用pypdf2合并、分割、加密pdf文件的代码详解
2019/05/21 Python
Python多继承以及MRO顺序的使用
2019/11/11 Python
分享一枚pycharm激活码适用所有pycharm版本我的pycharm2020.2.3激活成功
2020/11/20 Python
python3定位并识别图片验证码实现自动登录功能
2021/01/29 Python
HTML5 Canvas标签使用收录
2009/07/07 HTML / CSS
城野医生官方海外旗舰店:风靡亚洲毛孔收敛水
2018/04/26 全球购物
工程开工庆典邀请函
2014/02/01 职场文书
关于旷工的检讨书
2014/02/02 职场文书
毕业生简历自我评价范文
2014/04/09 职场文书
酒店管理专业毕业生自我鉴定
2014/09/29 职场文书
PhpSpreadsheet中文文档 | Spreadsheet操作教程实例
2021/04/01 PHP