为超链接加上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
js判断鼠标同时离开两个div的思路及代码
May 31 Javascript
avalonjs制作响应式瀑布流特效
May 06 Javascript
Jquery 效果使用详解
Nov 23 Javascript
基于BootStrap的图片轮播效果展示实例代码
May 23 Javascript
Vue.js每天必学之过滤器与自定义过滤器
Sep 07 Javascript
VUE利用vuex模拟实现新闻点赞功能实例
Jun 28 Javascript
详解vue.js移动端导航navigationbar的封装
Jul 05 Javascript
详解如何给React-Router添加路由页面切换时的过渡动画
Apr 25 Javascript
微信小程序开发之左右分栏效果的实例代码
May 20 Javascript
Node.js设置定时任务之node-schedule模块的使用详解
Apr 28 Javascript
vue 导出文件,携带请求头token操作
Sep 10 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
PHP 巧用数组降低程序的时间复杂度
2010/01/01 PHP
php excel reader读取excel内容存入数据库实现代码
2012/12/06 PHP
mongo Table类文件 获取MongoCursor(游标)的实现方法分析
2013/07/01 PHP
php提取字符串中网站url地址的方法
2014/12/03 PHP
PHP使用http_build_query()构造URL字符串的方法
2016/04/02 PHP
php+jQuery+Ajax简单实现页面异步刷新
2016/08/08 PHP
改版了网上的一个js操作userdata
2007/04/27 Javascript
JavaScript 模仿vbs中的 DateAdd() 函数的代码
2007/08/13 Javascript
用js判断页面是否加载完成实现代码
2012/12/11 Javascript
表格单元格交错着色实现思路及代码
2013/04/01 Javascript
chrome下img加载对height()的影响示例探讨
2014/05/26 Javascript
jQuery实现页面滚动时动态加载内容的方法
2015/03/20 Javascript
JS实现的论坛Ajax打分效果完整实例
2015/10/31 Javascript
不定义JQuery插件 不要说会JQuery
2016/03/07 Javascript
使用bootstrapValidator插件进行动态添加表单元素并校验
2016/09/28 Javascript
BootStrap的select2既可以查询又可以输入的实现代码
2017/02/17 Javascript
100行代码理解和分析vue2.0响应式架构
2017/03/09 Javascript
使用Vue写一个datepicker的示例
2018/01/27 Javascript
关于vue-cli 3配置打包优化要点(推荐)
2019/04/22 Javascript
解决cordova+vue 项目打包成APK应用遇到的问题
2019/05/10 Javascript
微信小程序仿今日头条导航栏滚动解析
2019/08/20 Javascript
深入理解基于vue-cli的webpack打包优化实践及探索
2019/10/14 Javascript
python使用cookielib库示例分享
2014/03/03 Python
Python开发实例分享bt种子爬虫程序和种子解析
2014/05/21 Python
使用Python获取Linux系统的各种信息
2014/07/10 Python
在Python中使用poplib模块收取邮件的教程
2015/04/29 Python
Python简单遍历字典及删除元素的方法
2016/09/18 Python
python编程羊车门问题代码示例
2017/10/25 Python
Python2中文处理纪要的实现方法
2018/03/10 Python
Python实现压缩文件夹与解压缩zip文件的方法
2018/09/01 Python
pycharm安装及如何导入numpy
2020/04/03 Python
美国知名的家庭连锁百货商店:Boscov’s
2017/07/27 全球购物
英国网上自行车商店:Tredz Bikes
2019/10/29 全球购物
生日庆典策划方案
2014/06/02 职场文书
社团活动总结模板
2014/06/30 职场文书
Golang 实现 WebSockets 之创建 WebSockets
2022/04/24 Golang