...
|
...
|
@@ -9,6 +9,7 @@ var $ = require('yoho.jquery'), |
|
|
|
|
|
var $registerPage = $('.register-page'),
|
|
|
$pwdTips = $('#pwd-tips'),
|
|
|
$pwdTip1 = $pwdTips.find('#pwd-tip1'),
|
|
|
$errTip = $('#err-tip'),
|
|
|
$registerBtn = $('#register-btn');
|
|
|
|
...
|
...
|
@@ -57,20 +58,17 @@ validateResult = [ |
|
|
{
|
|
|
id: 'phone-num',
|
|
|
message: '', //错误信息
|
|
|
status: false, //当前的状态
|
|
|
isNeedAjaxValidate: false //是否需要ajax校验,如果手机号正则校验通过则需要ajax校验该手机号是否注册过
|
|
|
status: false //当前的状态
|
|
|
},
|
|
|
{
|
|
|
id: 'captcha',
|
|
|
message: '',
|
|
|
status: false,
|
|
|
isNeedAjaxValidate: false //图形验证码需要发ajax确认是否正确
|
|
|
status: false
|
|
|
},
|
|
|
{
|
|
|
id: 'msg-captcha',
|
|
|
message: '',
|
|
|
status: false,
|
|
|
isNeedAjaxValidate: false //是否需要ajax请求验证短信验证码的正确性
|
|
|
status: false
|
|
|
},
|
|
|
{
|
|
|
id: 'pwd',
|
...
|
...
|
@@ -183,10 +181,6 @@ function validateRule($element, callback) { |
|
|
callback();
|
|
|
|
|
|
} else {
|
|
|
validateResult[0].message = '';
|
|
|
validateResult[0].status = false;
|
|
|
validateResult[0].isNeedAjaxValidate = true;
|
|
|
|
|
|
phoneAjaxFn(callback);
|
|
|
}
|
|
|
|
...
|
...
|
@@ -197,10 +191,22 @@ function validateRule($element, callback) { |
|
|
validateResult[1].status = false;
|
|
|
callback();
|
|
|
|
|
|
} else if (val.length <= 3) {
|
|
|
validateResult[1].message = '图形验证码为4位';
|
|
|
validateResult[1].status = false;
|
|
|
callback();
|
|
|
|
|
|
} else {
|
|
|
validateResult[1].message = '';
|
|
|
validateResult[1].isNeedAjaxValidate = true;
|
|
|
picCaptchaAjaxFn(callback);
|
|
|
|
|
|
// 并且手机号正确
|
|
|
if (validateResult[0].status) {
|
|
|
picCaptchaAjaxFn(callback);
|
|
|
} else {
|
|
|
validateResult[1].message = '图形验证码错误';
|
|
|
validateResult[1].status = false;
|
|
|
callback();
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
//短信验证码校验
|
...
|
...
|
@@ -211,11 +217,20 @@ function validateRule($element, callback) { |
|
|
validateResult[2].status = false;
|
|
|
callback();
|
|
|
|
|
|
} else {
|
|
|
validateResult[2].message = '';
|
|
|
} else if (val.length <= 3) {
|
|
|
validateResult[2].message = '短信验证码为4位';
|
|
|
validateResult[2].status = false;
|
|
|
validateResult[2].isNeedAjaxValidate = true;
|
|
|
msgCaptchaAjaxFn(callback);
|
|
|
callback();
|
|
|
|
|
|
} else {
|
|
|
|
|
|
// 并且图形验证码正确
|
|
|
if (validateResult[1].status) {
|
|
|
msgCaptchaAjaxFn(callback);
|
|
|
} else {
|
|
|
validateResult[2].message = '短信验证码错误';
|
|
|
validateResult[2].status = false;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//密码校验
|
...
|
...
|
@@ -260,6 +275,7 @@ function validateRule($element, callback) { |
|
|
|
|
|
//显示提示信息
|
|
|
function showErrTip() {
|
|
|
|
|
|
var show = false,
|
|
|
tipPosition,
|
|
|
$container,
|
...
|
...
|
@@ -267,20 +283,26 @@ function showErrTip() { |
|
|
validateResultLen = validateResult.length;
|
|
|
|
|
|
for (i = 0; i < validateResultLen; i++) {
|
|
|
if (!show && !!validateResult[i].message) {
|
|
|
if (!show) {
|
|
|
|
|
|
//不可以通过status判断
|
|
|
if (!!validateResult[i].message) {
|
|
|
|
|
|
//显示错误提示
|
|
|
$errTip.find('span').text(validateResult[i].message);
|
|
|
//显示错误提示
|
|
|
$errTip.find('span').text(validateResult[i].message);
|
|
|
|
|
|
$container = $('#' + validateResult[i].id);
|
|
|
$container = $('#' + validateResult[i].id);
|
|
|
|
|
|
tipPosition = $container.offset();
|
|
|
$errTip.css({
|
|
|
top: tipPosition.top - 40,
|
|
|
left: tipPosition.left
|
|
|
}).removeClass('hide');
|
|
|
tipPosition = $container.offset();
|
|
|
$errTip.css({
|
|
|
top: tipPosition.top - 40,
|
|
|
left: tipPosition.left
|
|
|
}).removeClass('hide');
|
|
|
|
|
|
show = true; //停止判断
|
|
|
show = true; //停止判断
|
|
|
} else {
|
|
|
$errTip.addClass('hide');
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
...
|
...
|
@@ -308,18 +330,67 @@ function showBorder() { |
|
|
}
|
|
|
}
|
|
|
|
|
|
// 密码强度验证
|
|
|
function pwdFn($obj) {
|
|
|
var pwd = $obj.val(),
|
|
|
pwdStrength = computeComplex(pwd),
|
|
|
level = 0;
|
|
|
|
|
|
if (pwdStrength === 0) {
|
|
|
level = 0;
|
|
|
} else if (pwdStrength <= 10) {
|
|
|
level = 1;
|
|
|
} else if (pwdStrength <= 20) {
|
|
|
level = 2;
|
|
|
} else {
|
|
|
level = 3;
|
|
|
}
|
|
|
|
|
|
switch (level) {
|
|
|
case 0:
|
|
|
$pwdParent.removeClass('red yellow green');
|
|
|
$pwdIntensity.removeClass('color');
|
|
|
break;
|
|
|
case 1:
|
|
|
$pwdParent.addClass('red').removeClass('yellow green');
|
|
|
$pwdIntensity.filter('.low').addClass('color');
|
|
|
$pwdIntensity.filter('.mid,.high').removeClass('color');
|
|
|
break;
|
|
|
case 2:
|
|
|
$pwdParent.addClass('yellow').removeClass('red green');
|
|
|
$pwdIntensity.filter('.low,.mid').addClass('color');
|
|
|
$pwdIntensity.filter('.high').removeClass('color');
|
|
|
break;
|
|
|
case 3:
|
|
|
$pwdParent.addClass('green').removeClass('yellow red');
|
|
|
$pwdIntensity.addClass('color');
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
//提示框
|
|
|
if (pwd === '') {
|
|
|
$pwdTip1.removeClass('red yes no').addClass('default');
|
|
|
} else if (pwd.length < 6 || pwd.length > 20) {
|
|
|
$pwdTip1.removeClass('default yes').addClass('no red');
|
|
|
} else {
|
|
|
$pwdTip1.removeClass('default no red').addClass('yes');
|
|
|
}
|
|
|
}
|
|
|
|
|
|
// 失去焦点时开始校验
|
|
|
// Tips: 不可以在获得焦点的时候验证,获得焦点和失去焦点的间隔太小,如果中间存在ajax校验的话会出现问题
|
|
|
$registerPage.find('.va').keyup(function() {
|
|
|
|
|
|
var j,
|
|
|
statusLen = 0,
|
|
|
vLen = validateResult.length;
|
|
|
vLen = validateResult.length,
|
|
|
$that = $(this);
|
|
|
|
|
|
validateRule($(this), function() {
|
|
|
showErrTip();
|
|
|
showErrTip(); // 显示错误提示
|
|
|
showBorder(); // 显示红色边框
|
|
|
|
|
|
// 如果validateResult中有4个status为true表示验证通过
|
|
|
for (j = 0; j < vLen; j++) {
|
|
|
|
|
|
if (validateResult[j].status) {
|
...
|
...
|
@@ -335,14 +406,28 @@ $registerPage.find('.va').keyup(function() { |
|
|
$registerBtn.addClass('disable');
|
|
|
}
|
|
|
|
|
|
// 图形验证通过时,发送短信按钮可点击
|
|
|
if (validateResult[1].status) {
|
|
|
$sendCaptcha.removeClass('disable');
|
|
|
} else {
|
|
|
$sendCaptcha.addClass('disable');
|
|
|
}
|
|
|
|
|
|
//图形验证通过时,发送短信按钮可点击 end
|
|
|
|
|
|
});
|
|
|
|
|
|
// 如果是密码则校验强度
|
|
|
if (($that).hasClass('pwd')) {
|
|
|
pwdFn($that);
|
|
|
}
|
|
|
|
|
|
}).blur(function() {
|
|
|
|
|
|
validateRule($(this), function() {
|
|
|
/*validateRule($(this), function() {
|
|
|
showErrTip();
|
|
|
showBorder(); // 显示红色边框
|
|
|
});
|
|
|
});*/
|
|
|
});
|
|
|
|
|
|
$regionSelect.change(function() {
|
...
|
...
|
@@ -352,68 +437,23 @@ $regionSelect.change(function() { |
|
|
validateRule($pn, showErrTip); //验证
|
|
|
});
|
|
|
|
|
|
// 图形验证keyup
|
|
|
$ca.keyup(function() {
|
|
|
|
|
|
// 验证码输入4位并且手机号验证通过发ajax请求
|
|
|
if ($(this).val().length === 4 && validateResult[0].status) {
|
|
|
|
|
|
picCaptchaAjaxFn(function() {
|
|
|
if (validateResult[1].status) {
|
|
|
$sendCaptcha.removeClass('disable');
|
|
|
}
|
|
|
});
|
|
|
// 点击发送验证码
|
|
|
$sendCaptcha.click(function() {
|
|
|
var timeResidue = 10,
|
|
|
t;
|
|
|
|
|
|
} else {
|
|
|
$sendCaptcha.addClass('disable');
|
|
|
if ($(this).hasClass('disable')) {
|
|
|
return;
|
|
|
}
|
|
|
});
|
|
|
|
|
|
$pwd.keyup(function() {
|
|
|
var pwd = $(this).val(),
|
|
|
pwdStrength = computeComplex(pwd),
|
|
|
level = 0;
|
|
|
|
|
|
if (pwdStrength === 0) {
|
|
|
level = 0;
|
|
|
} else if (pwdStrength <= 10) {
|
|
|
level = 1;
|
|
|
} else if (pwdStrength <= 20) {
|
|
|
level = 2;
|
|
|
} else {
|
|
|
level = 3;
|
|
|
}
|
|
|
|
|
|
switch (level) {
|
|
|
case 0:
|
|
|
$pwdParent.removeClass('red yellow green');
|
|
|
$pwdIntensity.removeClass('color');
|
|
|
break;
|
|
|
case 1:
|
|
|
$pwdParent.addClass('red').removeClass('yellow green');
|
|
|
$pwdIntensity.filter('.low').addClass('color');
|
|
|
$pwdIntensity.filter('.mid,.high').removeClass('color');
|
|
|
break;
|
|
|
case 2:
|
|
|
$pwdParent.addClass('yellow').removeClass('red green');
|
|
|
$pwdIntensity.filter('.low,.mid').addClass('color');
|
|
|
$pwdIntensity.filter('.high').removeClass('color');
|
|
|
break;
|
|
|
case 3:
|
|
|
$pwdParent.addClass('green').removeClass('yellow red');
|
|
|
$pwdIntensity.addClass('color');
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
//提示框
|
|
|
/*if (pwd === '') {
|
|
|
|
|
|
} else {
|
|
|
|
|
|
if (pwd.length < 6 || pwd.length > 20) {
|
|
|
|
|
|
} else {
|
|
|
//todo ajax
|
|
|
|
|
|
t = setInterval(function() {
|
|
|
if (timeResidue <= 0) {
|
|
|
$sendCaptcha.removeClass('disable').val('获取短信验证码');
|
|
|
clearInterval(t);
|
|
|
return;
|
|
|
}
|
|
|
}*/
|
|
|
$sendCaptcha.addClass('disable').val(timeResidue-- + '秒可重新发送');
|
|
|
}, 1000);
|
|
|
}); |
|
|
\ No newline at end of file |
...
|
...
|
|