为超链接加上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 相关文章推荐
基于jQuery的一个扩展form序列化到json对象
Dec 09 Javascript
计算新浪Weibo消息长度(还可以输入119字)
Jul 02 Javascript
jQuery实现仿美橙互联两级导航菜单效果完整实例
Sep 17 Javascript
javascript省市级联功能实现方法实例详解
Oct 20 Javascript
Vue.js 父子组件通讯开发实例
Sep 06 Javascript
jQuery版AJAX简易封装代码
Sep 14 Javascript
微信小程序  action-sheet详解及实例代码
Nov 09 Javascript
js 转义字符及URI编码详解
Feb 28 Javascript
vue主动刷新页面及列表数据删除后的刷新实例
Sep 16 Javascript
在Create React App中启用Sass和Less的方法示例
Jan 16 Javascript
原生JavaScript实现换肤
Feb 19 Javascript
JavaScript 事件捕获冒泡与捕获详情
Nov 11 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实现的获取网站备案信息查询代码(360)
2013/09/23 PHP
PHP生成Gif图片验证码
2013/10/27 PHP
php操作redis中的hash和zset类型数据的方法和代码例子
2014/07/05 PHP
PHP处理JSON字符串key缺少双引号的解决方法
2014/09/16 PHP
PHP+Jquery与ajax相结合实现下拉淡出瀑布流效果【无需插件】
2016/05/06 PHP
Gambit vs CL BO3 第二场 2.13
2021/03/10 DOTA
DIV外区域Click后关闭DIV的实现代码
2011/12/21 Javascript
js获取RadioButtonList的Value/Text及选中值等信息实现代码
2013/03/05 Javascript
JS实现标签页效果(配合css)
2013/04/03 Javascript
返回上一页并自动刷新的JavaScript代码
2014/02/19 Javascript
jQuery修改CSS伪元素属性的方法
2014/07/30 Javascript
javascript实现随机显示星星特效
2016/01/28 Javascript
jQuery包裹节点用法完整示例
2016/09/13 Javascript
小程序开发基础之view视图容器
2018/08/21 Javascript
vue 中引用gojs绘制E-R图的方法示例
2018/08/24 Javascript
解决父组件将子组件作为弹窗调用只执行一次created的问题
2020/07/24 Javascript
[03:15]DOTA2-DPC中国联赛1月22日Recap集锦
2021/03/11 DOTA
python生成指定长度的随机数密码
2014/01/23 Python
详解Python中的条件判断语句
2015/05/14 Python
python爬虫 正则表达式使用技巧及爬取个人博客的实例讲解
2017/10/20 Python
python中kmeans聚类实现代码
2018/02/23 Python
Python图像处理之颜色的定义与使用分析
2019/01/03 Python
python打开文件的方式有哪些
2020/06/29 Python
美国马匹用品和马钉购物网站:State Line Tack
2018/08/05 全球购物
Cotton On香港网站:澳洲时装连锁品牌
2018/11/01 全球购物
腾讯公司的一个sql题
2013/01/22 面试题
平面设计师的工作职责
2013/11/21 职场文书
给交警的表扬信
2014/01/12 职场文书
道路交通安全实施方案
2014/03/12 职场文书
土建专业毕业生自荐书
2014/07/04 职场文书
学校节能宣传周活动总结
2014/07/09 职场文书
不服从上级领导安排的检讨书
2014/09/14 职场文书
教师三严三实心得体会
2014/10/11 职场文书
通知范文怎么写
2015/04/16 职场文书
2016暑期师德培训心得体会
2016/01/09 职场文书
MySQL EXPLAIN输出列的详细解释
2021/05/12 MySQL