为超链接加上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压缩利器
Feb 20 Javascript
JavaScript While 循环基础教程
Apr 05 Javascript
非常不错的功能强大代码简单的管理菜单美化版
Jul 09 Javascript
纯js实现背景图片切换效果代码
Nov 14 Javascript
JS实现定时自动关闭DIV层提示框的方法
May 11 Javascript
在浏览器中打开或关闭JavaScript的方法
Jun 03 Javascript
js实现新年倒计时效果
Dec 10 Javascript
浅析js绑定事件的常用方法
May 15 Javascript
收藏AngularJS中最重要的核心功能
Jul 09 Javascript
Javascript实现异步编程的过程
Jun 18 Javascript
解决layui 三级联动下拉框更新时回显的问题
Sep 03 Javascript
Node Express用法详解【安装、使用、路由、中间件、模板引擎等】
May 13 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
全国FM电台频率大全 - 6 辽宁省
2020/03/11 无线电
jquery购物车实时结算特效实现思路
2013/09/23 Javascript
JS教程:window.location使用方法的区别介绍
2013/10/04 Javascript
javacript使用break内层跳出外层循环分析
2015/01/12 Javascript
JavaScript的MVVM库Vue.js入门学习笔记
2016/05/03 Javascript
微信小程序  网络请求API详解
2016/10/25 Javascript
使用bootstrap-paginator.js 分页来进行ajax 异步分页请求示例
2017/03/09 Javascript
JQuery 封装 Ajax 常用方法(推荐)
2017/05/21 jQuery
vue.js分页中单击页码更换页面内容的方法(配合spring springmvc)
2018/02/10 Javascript
详解如何快速配置webpack多入口脚手架
2018/12/28 Javascript
angular4自定义组件非input元素实现ngModel双向数据绑定的方法
2018/12/28 Javascript
vue.js实现会动的简历(包含底部导航功能,编辑功能)
2019/04/08 Javascript
Vue.js仿Select下拉框效果
2020/02/18 Javascript
[01:19:33]DOTA2-DPC中国联赛 正赛 iG vs VG BO3 第一场 2月2日
2021/03/11 DOTA
python变量不能以数字打头详解
2016/07/06 Python
python实现人脸识别代码
2017/11/08 Python
python实现给微信指定好友定时发送消息
2019/04/29 Python
Numpy 理解ndarray对象的示例代码
2020/04/03 Python
sklearn中的交叉验证的实现(Cross-Validation)
2021/02/22 Python
Doyoueven官网:澳大利亚健身服饰和配饰品牌
2019/03/24 全球购物
环境科学专业研究生求职信
2013/10/02 职场文书
会计专业推荐信
2013/10/29 职场文书
活动邀请函范文
2014/01/19 职场文书
房屋继承公证书
2014/04/10 职场文书
敬老院院长事迹材料
2014/05/21 职场文书
电大奖学金获奖感言
2014/08/14 职场文书
中学生2014国庆节演讲稿:不屈的民族
2014/09/21 职场文书
企业三严三实学习心得体会
2014/10/13 职场文书
2014年医德医风工作总结
2014/11/13 职场文书
博士给导师的自荐信
2015/03/06 职场文书
大学社团活动总结怎么写
2019/06/21 职场文书
文书工作总结(范文)
2019/07/11 职场文书
2019年幼儿园管理条例范本!
2019/07/17 职场文书
简单总结SpringMVC拦截器的使用方法
2021/06/28 Java/Android
俄罗斯十大城市人口排名,第三首都仅排第六,第二是北方首都
2022/03/20 杂记
MySql如何将查询的出来的字段进行转换
2022/06/14 MySQL