今天写了一个demo,实现验证码的倒计时。
源代码如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<script type="text/javascript" src="js/jquery-3.1.0.min.js"></script>
</head>
<body>
<input type="button" id="btn" value="免费获取验证码" οnclick="settime(this)" />
<script>
var countdown = 3;
function settime(btn){
if(countdown==0){
btn.removeAttribute("disabled");
btn.value="重新获取验证码";
countdown = 3;
return false;
}else if(countdown<=3&&countdown>0){
btn.setAttribute("disabled",true);
btn.value="" + countdown + "秒后重新发送";
// btn.val()="hello";
countdown--;
}
setTimeout(function(){
settime(btn);
},1000)
}
</script>
</body>
</html>
注意留意红色的两行。
为什么val()不行,但是.value生效了呢?
区别
————————
val(。。。) : 设置输入域的值。比如input的输入值。元素的值是通过 。。。 属性设置的。该方法大多用于 input 元素。
.value : 是DOM value 属性。按钮的value通常写在标签内部 <button value="提交">,可见是原生的属性,并不是用户后来输入的。这就是区别
用法
———————————
obj.val("给obj的value赋值");或者 obj.val()="给obj的value赋值";//必须在引入jQuery的情况下
obj.value="给obj设置value"; //注意,不加括号