为超链接加上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 相关文章推荐
使用Javascript和DOM Interfaces来处理HTML
Oct 09 Javascript
Java/JS获取flash高宽的具体方法
Dec 27 Javascript
JavaScript的jQuery库插件的简要开发指南
Aug 12 Javascript
jQuery实现公告新闻自动滚屏效果实例代码
Jul 14 Javascript
Angular1.x自定义指令实例详解
Mar 01 Javascript
DataTables添加额外的查询参数和删除columns等无用参数实例
Jul 04 Javascript
Vue.js分页组件实现:diVuePagination的使用详解
Jan 10 Javascript
angularJs-$http实现百度搜索时的动态下拉框示例
Feb 27 Javascript
JavaScript惰性载入函数实例分析
Mar 27 Javascript
D3.js(v3)+react 实现带坐标与比例尺的散点图 (V3版本)
May 09 Javascript
JavaScript Reflect Metadata实现详解
Dec 12 Javascript
Js图片点击切换轮播实现代码
Jul 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
PHPUnit安装及使用示例
2014/10/29 PHP
PHP查看SSL证书信息的方法
2016/09/22 PHP
javascript中的=等号个数问题两个跟三个有什么区别
2013/10/23 Javascript
js获取指定的cookie的具体实现
2014/02/20 Javascript
node.js应用后台守护进程管理器Forever安装和使用实例
2014/06/01 Javascript
判断字符串的长度(优化版)中文占两个字符
2014/10/30 Javascript
JavaScript获取Url里的参数
2014/12/18 Javascript
javascript结合CSS实现苹果开关按钮特效
2015/04/07 Javascript
浅谈被jQuery抛弃的函数及替代函数
2015/05/03 Javascript
javascript的变量、传值、传址、参数之间关系
2015/07/26 Javascript
移动端翻页插件dropload.js(支持Zepto和jQuery)
2016/07/27 Javascript
JS动态遍历json中所有键值对的方法(不知道属性名的情况)
2016/12/28 Javascript
Javascript实现时间倒计时效果
2017/07/15 Javascript
使用jquery+iframe做一个ajax上传效果(实例)
2017/08/24 jQuery
Angular中支持SCSS的方法
2017/11/18 Javascript
Vue框架之goods组件开发详解
2018/01/25 Javascript
echarts实现地图定时切换散点与多图表级联联动详解
2018/08/07 Javascript
对layui初始化列表的CheckBox属性详解
2019/09/13 Javascript
js实现点赞按钮功能的实例代码
2020/03/06 Javascript
three.js 将图片马赛克化的示例代码
2020/07/31 Javascript
JavaScript Image对象实现原理实例解析
2020/08/26 Javascript
vue+elementUI中表格高亮或字体颜色改变操作
2020/11/02 Javascript
python实现文件名批量替换和内容替换
2014/03/20 Python
Python字符串和文件操作常用函数分析
2015/04/08 Python
Python使用Matplotlib实现Logos设计代码
2017/12/25 Python
Python列表解析配合if else的方法
2018/06/23 Python
利用Python求阴影部分的面积实例代码
2018/12/05 Python
Python调用Windows命令打印文件
2020/02/07 Python
pandas 数据类型转换的实现
2020/12/29 Python
H5调用相机拍照并压缩图片的实例代码
2017/07/20 HTML / CSS
中国综合网上购物商城:苏宁易购
2016/08/09 全球购物
Free People中国官网:波西米亚风格女装服饰
2016/08/30 全球购物
三星法国官方网站:Samsung法国
2019/10/31 全球购物
计算机专业毕业生推荐信
2013/11/25 职场文书
培训协议书范本
2014/04/22 职场文书
事业单位聘任报告
2015/03/02 职场文书