为超链接加上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 相关文章推荐
取得父标签
Nov 14 Javascript
javascript 无提示关闭窗口脚本
Aug 17 Javascript
JavaScript高级程序设计(第3版)学习笔记7 js函数(上)
Oct 11 Javascript
js 将json字符串转换为json对象的方法解析
Nov 13 Javascript
jquery实现经典的淡入淡出选项卡效果代码
Sep 22 Javascript
详解jQuery插件开发方式
Nov 22 Javascript
详解Angular 4.x NgTemplateOutlet
May 24 Javascript
vue 动态修改a标签的样式的方法
Jan 18 Javascript
Angular 5.x 学习笔记之Router(路由)应用
Apr 08 Javascript
微信小程序textarea层级过高的解决方法
Mar 04 Javascript
浏览器JavaScript调试功能无法使用解决方案
Sep 18 Javascript
vue路由实现登录拦截
Mar 24 Vue.js
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
《心理测量者3》剧场版动画预告
2020/03/02 日漫
PHPShop存在多个安全漏洞
2006/10/09 PHP
php的字符串用法小结
2010/06/08 PHP
php抽奖小程序的实现代码
2013/06/18 PHP
兼容PHP和Java的des加密解密代码分享
2014/06/26 PHP
php中__destruct与register_shutdown_function执行的先后顺序问题
2014/10/17 PHP
php中上传文件的的解决方案
2018/09/25 PHP
用 Javascript 验证表单(form)中的单选(radio)值
2009/09/08 Javascript
CutePsWheel javascript libary 控制输入文本框为可使用滚轮控制的js库
2010/02/07 Javascript
JavaScript自定义DateDiff函数(兼容所有浏览器)
2012/03/01 Javascript
js判断ie版本号的简单实现代码
2014/03/05 Javascript
使用jQuery在对象中缓存选择器的简单方法
2015/06/30 Javascript
jquery中ajax跨域方法实例分析
2015/12/18 Javascript
JavaScript的设计模式经典之建造者模式
2016/02/24 Javascript
AngularJS入门教程之路由与多视图详解
2016/08/19 Javascript
Actionscript与javascript交互实例程序(修改)
2016/09/22 Javascript
Angular 4.x 动态创建表单实例
2017/04/25 Javascript
Angular4实现动态添加删除表单输入框功能
2017/08/11 Javascript
微信小程序之前台循环数据绑定
2017/08/18 Javascript
Angular实现点击按钮后在上方显示输入内容的方法
2017/12/27 Javascript
Vue自定义弹窗指令的实现代码
2018/08/13 Javascript
Javascript中绑定click事件的四种方式介绍
2018/10/26 Javascript
关于自定义Egg.js的请求级别日志详解
2018/12/12 Javascript
微信小程序select下拉框实现源码
2019/11/08 Javascript
Python中用pycurl监控http响应时间脚本分享
2015/02/02 Python
python实现提取百度搜索结果的方法
2015/05/19 Python
python分析作业提交情况
2017/11/22 Python
使用Pandas对数据进行筛选和排序的实现
2019/07/29 Python
Python统计文本词汇出现次数的实例代码
2020/02/27 Python
详解移动端Html5页面中1px边框的几种解决方法
2018/07/24 HTML / CSS
新闻专业个人自我评价
2013/09/21 职场文书
《一个中国孩子的呼声》教学反思
2014/02/12 职场文书
2014年计生工作总结
2014/11/21 职场文书
安全主题班会教案
2015/08/12 职场文书
2019同学聚会主持词
2019/05/06 职场文书
浅谈MySql update会锁定哪些范围的数据
2022/06/25 MySQL