为超链接加上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 获取IFrame中对象及获取其父窗口中对象示例
Aug 19 Javascript
jQuery实现按钮点击遮罩加载及处理完后恢复的效果
Jun 07 Javascript
微信小程序 五星评分(包括半颗星评分)实例代码
Dec 14 Javascript
React Router基础使用
Jan 17 Javascript
BootStrap注意事项小结(五)表单
Mar 10 Javascript
详解微信小程序与内嵌网页交互实现支付功能
Oct 22 Javascript
socket io与vue-cli的结合使用的示例代码
Nov 01 Javascript
详解Vue源码学习之双向绑定
Apr 10 Javascript
JS面向对象编程——ES6 中class的继承用法详解
Mar 03 Javascript
vue中解决拖拽改变存在iframe的div大小时卡顿问题
Jul 22 Javascript
JS轮播图的实现方法2
Aug 25 Javascript
Vue 401配合Vuex防止多次弹框的案例
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的朋友 经常问的一些问题。不断更新
2011/08/11 PHP
php调用google接口生成二维码示例
2014/04/28 PHP
PHP下的Oracle客户端扩展(OCI8)安装教程
2014/09/10 PHP
php利用反射实现插件机制的方法
2015/03/14 PHP
PHP实现的简单sha1加密功能示例
2017/08/27 PHP
thinkphp诸多限制条件下如何getshell详解
2020/12/09 PHP
JavaScript 事件对象的实现
2009/07/13 Javascript
Array.prototype.slice.apply的使用方法
2010/03/17 Javascript
extjs中form与grid交互数据(record)的方法
2013/08/29 Javascript
解决json日期格式问题的3种方法
2014/02/02 Javascript
使用AngularJS中的SCE来防止XSS攻击的方法
2015/06/18 Javascript
完美解决jQuery fancybox ie 无法显示关闭按钮的问题
2016/11/29 Javascript
vue-cli脚手架config目录下index.js配置文件的方法
2018/03/13 Javascript
LayUI switch 开关监听 获取属性值、更改状态的方法
2019/09/21 Javascript
Python 执行字符串表达式函数(eval exec execfile)
2014/08/11 Python
python3编写C/S网络程序实例教程
2014/08/25 Python
python实现模拟按键,自动翻页看u17漫画
2015/03/17 Python
Python中的高级数据结构详解
2015/03/27 Python
Python学习pygal绘制线图代码分享
2017/12/09 Python
Python3之文件读写操作的实例讲解
2018/01/23 Python
Python 文本文件内容批量抽取实例
2018/12/10 Python
Django框架模板语言实例小结【变量,标签,过滤器,继承,html转义】
2019/05/23 Python
在Django下创建项目以及设置settings.py教程
2019/12/03 Python
python 实现ping测试延迟的两种方法
2020/12/10 Python
python脚本使用阿里云slb对恶意攻击进行封堵的实现
2021/02/04 Python
python绘制汉诺塔
2021/03/01 Python
浅析CSS3中鲜为人知的属性:-webkit-tap-highlight-color
2017/01/12 HTML / CSS
美丽的珠宝配饰:SmallThings
2019/09/04 全球购物
中兴通讯全球官方网站:ZTE
2020/12/26 全球购物
森林防火工作方案
2014/02/14 职场文书
爬山的活动方案
2014/08/16 职场文书
2014年国庆节演讲稿
2014/09/02 职场文书
党员自我评价范文2015
2015/03/03 职场文书
横空出世观后感
2015/06/09 职场文书
某药房的新员工入职告知书!
2019/07/15 职场文书
Python基本数据类型之字符串str
2021/07/21 Python