为超链接加上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 对象模型 执行模型
Dec 06 Javascript
用JQuery实现全选与取消的两种简单方法
Feb 22 Javascript
jquery网页回到顶部效果(图标渐隐,自写)
Jun 16 Javascript
Python脚本后台运行的几种方式
Mar 09 Javascript
JS短信验证码倒计时功能的实现(没有验证码,只有倒计时)
Oct 27 Javascript
浅谈angular.js跨域post解决方案
Aug 30 Javascript
通过button将form表单的数据提交到action层的实例
Sep 08 Javascript
基于vue2.0实现简单轮播图
Nov 27 Javascript
利用ECharts.js画K线图的方法示例
Jan 10 Javascript
vue实现简单的MVVM框架
Aug 05 Javascript
vue实现购物车抛物线小球动画效果的方法详解
Feb 13 Javascript
JavaScript 闭包的使用场景
Sep 17 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小程序自动提交到自助友情连接
2009/11/24 PHP
php中计算时间差的几种方法
2009/12/31 PHP
php在服务器执行exec命令失败的解决方法
2012/03/03 PHP
CI框架自动加载session出现报错的解决办法
2014/06/17 PHP
PHP Ajax实现无刷新附件上传
2016/08/17 PHP
PHP 二级子目录(后台目录)设置二级域名
2017/03/02 PHP
JScript中的undefined和&quot;undefined&quot;的区别
2007/03/08 Javascript
使用SyntaxHighlighter实现HTML高亮显示代码的方法
2010/02/04 Javascript
JavaScript学习历程和心得小结
2010/08/16 Javascript
jquery下组织javascript代码(js函数化)
2010/08/25 Javascript
js动态往表格的td中添加图片并注册事件
2014/06/12 Javascript
JsRender for object语法简介
2014/10/31 Javascript
常用jQuery选择器汇总
2017/02/02 Javascript
微信小程序 websocket 实现SpringMVC+Spring+Mybatis
2017/08/04 Javascript
IE8中jQuery.load()加载页面不显示的原因
2018/11/15 jQuery
[01:22]DOTA2神秘商店携大量周边降临完美大师赛
2017/11/07 DOTA
[03:33]TI9战队采访 - Infamous
2019/08/20 DOTA
利用Python开发微信支付的注意事项
2016/08/19 Python
Python中的浮点数原理与运算分析
2017/10/12 Python
Python 新建文件夹与复制文件夹内所有内容的方法
2018/10/27 Python
python实现程序重启和系统重启方式
2020/04/16 Python
Python基于QQ邮箱实现SSL发送
2020/04/26 Python
python如何利用Mitmproxy抓包
2020/10/10 Python
selenium框架中driver.close()和driver.quit()关闭浏览器
2020/12/08 Python
css3弹性盒子flex实现三栏布局的实现
2020/11/12 HTML / CSS
前端实现背景虚化但内容清晰且自适应 的实例代码
2019/08/01 HTML / CSS
ECCO爱步美国官网:来自丹麦的鞋履品牌
2016/11/23 全球购物
《王二小》教学反思
2014/02/27 职场文书
人力资源求职信
2014/05/25 职场文书
中华魂放飞梦想演讲稿
2014/08/26 职场文书
爱牙日活动总结
2014/08/29 职场文书
2015年国庆节慰问信
2015/03/23 职场文书
七一活动主持词
2015/06/29 职场文书
学习经验交流会演讲稿
2015/11/02 职场文书
高效课堂教学反思
2016/02/24 职场文书
Java spring单点登录系统
2021/09/04 Java/Android