reset.js 2.24 KB
/**
 * 找回密码
 * @author: xuqi<qi.xu@yoho.cn>
 * @date: 2015/12/14
 */

var $ = require('yoho-jquery');

var $passwordInput = $('#pwd'),
    $repasswordInput = $('#re-input'),
    $next = $('#reset-pwd-btn');

var EventProxy = require('../common/eventproxy');

var ep = new EventProxy();

var pwdRegx = require('../common/mail-phone-regx').pwdValidateRegx;

var $errTip = $('.tips'),
    $errMsg = $errTip.find('.rectangle');

function errTip(ele, msg) {
    var topLeft = ele.offset();

    $errMsg.text(msg);
    return $errTip.css({
        top: topLeft.top + ele.height() - 2,
        left: topLeft.left,
        width: ele.width() + 2,
        height: ele.height
    }).removeClass('hide');
}

function hideTip() {
    return $errTip.addClass('hide');
}

require('yoho-jquery-placeholder');


// IE8 placeholder
$('input').placeholder();

ep.tail('pwd', 'repwd', function(pwd, repwd) {
    if (pwd && repwd) {
        $next.removeClass('disable');
    } else {
        $next.addClass('disable');
    }
});

$passwordInput.on('keyup blur', function() {
    var length = $passwordInput.val().length;

    if (length === 0) {
        errTip($passwordInput, '请输入密码');
        ep.emit('pwd', false);
        return;
    }

    if (length < 6 || length > 20) {
        errTip($passwordInput, '密码只支持 6-20 位字符,建议字母+数字的组合');
        ep.emit('pwd', false);
        return;
    }

    if (!pwdRegx.test($passwordInput.val())) {
        errTip($passwordInput, '密码只支持 6-20 位字符,建议字母+数字的组合');
        ep.emit('pwd', false);
        return;
    }

    ep.emit('pwd', true);
});

$repasswordInput.on('keyup blur', function() {
    var length = $repasswordInput.val().length;

    if (length === 0) {
        errTip($repasswordInput, '请再次输入密码');
        ep.emit('repwd', false);
        return;
    }

    if ($passwordInput.val() !== $repasswordInput.val()) {
        errTip($repasswordInput, '两次输入的密码不一致,请重新输入');
        ep.emit('repwd', false);
        return;
    }

    ep.emit('repwd', true);
});

ep.on('repwd', function(repwdAuth) {
    if (repwdAuth) {
        hideTip();
    }
});

ep.on('pwd', function(pwdAuth) {
    if (pwdAuth) {
        hideTip();
    }
});