为超链接加上disabled后的故事

 更新时间:2010年12月10日 14:51:35   作者:  
为超链接加上disabled后的故事,学习js的朋友可以参考下对超链接的一些控制。
场情:
  一张页面中原来有一个超链接按钮,点击后可以获取到短信认证码。如
复制代码 代码如下:

<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的并行运算实现代码

    随着多核cpu的普级,并发/并行多线程运算在主流的编程语言越来越流行,而在目前Javascript实现中还看不到在语言方面支持多线程,现在Javascript如此流行,真希望今后会在语言的层面有很大的变化.
    2010-11-11
  • 原生JS实现鼠标滑动撒爱心特效

    原生JS实现鼠标滑动撒爱心特效

    这篇文章主要为大家详细介绍了原生JS实现鼠标滑动撒爱心特效,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-10-10
  • 浅谈js中的in-for循环

    浅谈js中的in-for循环

    下面小编就为大家带来一篇浅谈js中的in-for循环。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-06-06
  • 纯前端JavaScript实现Excel IO案例分享

    纯前端JavaScript实现Excel IO案例分享

    这篇文章主要为大家详细介绍了纯前端JavaScript实现Excel IO案例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-08-08
  • JavaScript中判断数据类型的实用方法总结

    JavaScript中判断数据类型的实用方法总结

    最近项目中有不少地方需要判断数据类型,但是判断数据类型也有好几种方法,并且每种方法判断的数据类型也有局限性,所以本文就来为大家总结一下js中判断数据类型的几种实用方法吧
    2025-01-01
  • JavaScript中async await更优雅的错误处理方式

    JavaScript中async await更优雅的错误处理方式

    async/await中的异常处理很让人混乱,尽管有很多种方式来应对async 函数的异常,但是连经验丰富的开发者有时候也会搞错,所以这篇文章主要给大家介绍了关于JavaScript中async await更优雅的错误处理方式的相关资料,需要的朋友可以参考下
    2021-09-09
  • pjblog中的UBBCode.js

    pjblog中的UBBCode.js

    pjblog中的UBBCode.js...
    2007-04-04
  • js中自定义方法实现停留几秒sleep

    js中自定义方法实现停留几秒sleep

    js中不存在自带的sleep方法,要想休眠要自己定义个方法,需要的朋友可以参考下
    2014-07-07
  • JavaScript前端开发之实现二进制读写操作

    JavaScript前端开发之实现二进制读写操作

    这篇文章主要介绍了JavaScript前端开发之实现二进制读写操作的相关资料,需要的朋友可以参考下
    2015-11-11
  • 动态加载js文件 document.createElement

    动态加载js文件 document.createElement

    动态加载js文件 document.createElement...
    2006-10-10

最新评论