代码:
html元素:
<label for="">验证手机</label><input class="tel" type="text"/></br>
<label for="">短信验证码</label><input class="code" type="text"/><button class="getCode">获取验证码</button></br>
js代码:
$('.getCode').on('click',function(){
var _this=$(this);
// 禁止重提交
if(_this.is('.disabled')) return;
var tel=$('.tel').val();
var re=/^[1][3,4,5,7,8][0-9]{9}$/;
$.ajax({
url:'getCode.php',
type:'post',
dataType:'text',
data:'tel='+tel,
timeout:5000,
beforeSend:function(){
if(!re.test(tel)){
// alert(re.test(tel));
$('p').text('手机号码无效!').show().delay(1500).fadeOut();
return false;
}
// 禁用状态
_this.addClass('disabled');
var seconds = 60;
var t = setInterval(function () {
// 倒计时
_this.val(--seconds + '秒后再次获取');
if(seconds <= 0) {
clearInterval(t);
// 开启
_this.removeClass('disabled');
_this.val('获取验证码');
}
}, 1000);
},
success:function (data) {
console.log(data);
code=data;
console.log(code);
},
error:function(){
console.log(2);
},
complete:function(){
console.log(4);
}
});
});
php代码:
<?php
$arr = array(341232, 564512, 876567, 321653);
echo $arr[array_rand($arr)];
sleep(4);
?>
现在的问题是当我手机号码格式输入正确时,执行到error
当手机号码格式错误时,
$('p').text('手机号码无效!').show().delay(1500).fadeOut();
这一句代码昙花一现,页面立马刷新,求大佬们指点啊
你html代码中有form元素吧 获取验证码是button,点击会直接提交表单,无论action有没有
没太理解您的意思,能说详细些吗?可是用form比较好吧
@我心悦你: 就这么说吧 你先把form标签都给删掉 再试试,如果正常了,就是form的问题了
@河畔: 嗯,是这样的,把form去掉就可以了。但是我一定要用form,所以是这样改的,吧button改为了input,type=“button”,就解决了
@我心悦你: 也不一定 form中不要加action或者加上onsubmit都是可以阻止表单提交的
@河畔: 嗯,谢谢,问题解决了