clips 前端 js 倒计时 获取验证码的按钮
<a href="javascript:void(0);" onclick="get_captcha()" class="btn btn-default btn6" id="for_captcha" >获取验证码</a> <script type="text/javascript"> var url="/get-verify-code?phone_number=";
var i; function count_down(){
i=i-1;
$('#for_captcha').attr('disabled','disabled');
$('#for_captcha').html('剩余'+i+'秒..');
if(i<=0){
$('#for_captcha').removeAttr('disabled','disabled');
$('#for_captcha').html('获取验证码');
window.clearTimeout(countdown);
}
else{
var countdown=setTimeout('count_down()',1000);
}
} function get_captcha(){
var phone= $('#phone').val();//console.log(phone);
url=url+phone; re= /^1\d{10}$/;
if (re.test(phone)) {
$.post(url,function(data){
console.log(date);
}).complete(function(){
console.log('complete');
}); i=60;
count_down();
}
else {
alert("手机号码不正确");
return false;
} }
</script>
var btn_el = $(this);
var wait = ;
btn_el.css('background-color','#aaa');
btn_el.text('再次获取'+wait+'...');
btn_el.prop('disabled',true);
var temp = setInterval(function(){
wait--;
btn_el.text('再次获取'+wait+'...');
if(wait == ){
window.clearInterval(temp);
btn_el.css('background-color','#f14658');
btn_el.text('获取验证码');
btn_el.prop('disabled',false);
}
}, );
note:
项目使用了bootstrap,当我写这个脚本的时候,我发现一个很诡异的现象,在点击获取按钮的一瞬间按钮消失了
firefox和chrome浏览器里都有那么一瞬间,但是只要稍微触碰任意一下页面元素甚至只是在f12换一个元素审查,
一切正常了
我发现当禁用后的position 变成了relative,而正常情况下一直是static状态 但问题不在这里 原因是bootstrap的预定义样式
btn btn-default 在一瞬间应用优先权重超过了我定义的 其中一项background-color:white造成了覆盖和按钮消失的错觉,这本是不应发生的。
因为触碰任意页面一个元素,浏览器又会重新计算,从而应用我的定义样式
暂仍未找到他覆盖我样式的直接原因,目前先用 background-color:#218e23 !important;解决此问题。
2015-11-11 编辑补充两点
对于disabled 之类的dom元素属性 不应该使用attr()方法操作 而应该换用jquery1.6+ 的prop()
对于dom属性具有相关类似true or false 属性的操作,应该使用prop 操作 ,否则会出现一些浏览器会发生仍然响应或者拿到不对的值的问题
To retrieve and change DOM properties such as the checked, selected, or disabled state of form elements, use the .prop() method.
覆盖我之前的样式现已知,是因为:focus :active 等伪类的状态造成的
clips 前端 js 倒计时 获取验证码的按钮的更多相关文章
- Angular.js 使用获取验证码按钮实现-倒计时
获取验证码界面效果如图: 需要实现以下逻辑 按钮不可选 --输入电话号码,按钮可选 --点击获取,进入倒计时,按钮不可选 --倒计时结束,回到初识状态 核心代码: var cd = 60; var t ...
- js倒计时发送验证码按钮
var wait=60; function time(o) { if (wait == 0) { o.removeAttribute("disabled"); o.value=&q ...
- 用Javascript做一个“获取验证码”的按钮
要求:①点击按钮后背景色会发生改变②有倒计时(一般为30秒) <!DOCTYPE HTML> <html> <head> <meta charset=&quo ...
- javascript 倒计时获取验证码
var wait=60;function reSendCode(id) { var obj = $("#"+id); if (wait == 0) { obj.attr(" ...
- clips 前端 js 动画 抛物线加入购物车
抛物线加入购物车的特效动画(支持ie7以上,移动端表现良好) 1.引用一个极小的jquery插件库 2.启动 设置 起点 终点 和完成后回调函数 1.插件地址 git-hub上的官方主页 ...
- clips 前端 js 单选按钮与输入框 的配合变化
情形1: 一对单选按钮 一个输入框组 输入框组随单选按钮的改变而替换文字或执行其它 片段属于 介绍单选框的基本使用方式 : 1.单选框是有分类的,每个单选框有自己所属的组 从而一个页面可以拥有多组单 ...
- 前端js倒计时(精确到毫秒)
话不多说,直接上代码: 有需要直接拿走, <html> <head> <style> div{ width:100%; text-align:center; fon ...
- iOS “获取验证码”按钮的倒计时功能
iOS 的倒计时有多种实现细节,Cocoa Touch 为我们提供了 NSTimer 类和 GCD 的dispatch_source_set_timer方法去更加方便的使用计时器.我们也可以很容易的的 ...
- JS获取验证码后倒计时不受刷新及关闭影响
HTML部分 <input type="button" id="code_btn" value="获取验证码"> JS部分 // ...
随机推荐
- echarts零基础快速入门
第一步:得到这个dom对象.然后进行各种操作. var myChart = echarts.init(document.getElementById('item1')); 第二步:所有的配置项全部放在 ...
- 【Effective C++读书笔记】序
C++ 是一个难学易用的语言! [C++为什么难学?] C++的难学,不仅在其广博的语法,以及语法背后的语义,以及语义背后的深层思维,以及深层思维背后的对象模型: C++的难学还在于它提供了四种不同而 ...
- 彻底搞定C指针--“函数名与函数指针”
函数名与函数指针 一 通常的函数调用 一个通常的函数调用的例子: //自行包含头文件 void MyFun(int x); //此处的申明也可写成:void MyFun( int ); 点击打开链 ...
- Google Compute Engine VM自动调节
现象:利用google云搭建VM服务,在搭建实例组有一个"自动调节"功能,可以自动添加/删除MV,当自动添加VM时可能新添加的VM就是一个新的VM,你部署的代码或者环境都没了.现在 ...
- 从Wireshark看TCP连接的建立与关闭
TCP是一种面向连接.可靠的协议.TCP连接的建立与断开,都是需要经过通信双方的协商.用一句话概括就是:三次握手say hello(建立连接):四次握手say goodbye(断开连接).要了解TCP ...
- 13,发布CRM
发布CRM你将使用以下软件 nginx uWSGI CentOS7 CRM项目文件 virtualenv supervisor WSGI.uWSGI python web服务器开发使用WSGI协议(W ...
- 110Balanced Binary Tree
问题:判断二叉树是否为平衡二叉树分析:树上的任意结点的左右子树高度差不超过1,则为平衡二叉树. 搜索递归,记录i结点的左子树高度h1和右子树高度h2,则i结点的高度为max(h1,h2 ...
- Java线程---简介
实现方式 在java中线程有两种实现方式: 1.继承thread类 2.实现runnable接口 Thread类 Thread类时在java.lang包中定义的,继承thread类必须重写run()方 ...
- 2.ifconfig
转载http://www.cnblogs.com/peida/archive/2013/02/27/2934525.html 许多windows非常熟悉ipconfig命令行工具,它被用来获取网络接口 ...
- laravel5.5入口文件分析
入口文件 public/index.php 1.加载composer的自动加载器 require __DIR__.'/../vendor/autoload.php'; 自动加载,不用再各种requir ...