sms-password.page.js 2.6 KB
'use strict';

var tip, checkPoint, validatePWD;
var $eyeBtn,
    $pwd,
    $nextBtn,
    $pwdLint,
    $pwdLintTxt;

var page;


require('js/common');
tip = require('plugin/tip');
checkPoint = require('./smslogin/check-point');
validatePWD = require('./password-check');

setTimeout(function() {
    checkPoint('YB_SET_PASSWORD_L');
}, 3000);

page = {
    smsCode: window.queryString.smsCode,
    init: function() {
        this.domInit();
        this.bindEvent();
    },
    domInit: function() {
        $eyeBtn = $('#eye');
        $pwd = $('#pwd');
        $nextBtn = $('#btn-next');
        $pwdLint = $('.js-password').find('.pwd-lint');
        $pwdLintTxt = $pwdLint.find('.pwd-lint-txt');
    },
    bindEvent: function() {
        var self = this;

        $eyeBtn.on('click', function() {
            self.togglePassword();
        });

        $nextBtn.on('click', function() {
            if (!self.smsCode) {
                return tip.show('非法请求');
            }
            self.setPasswordAndLogin();
        });

        $pwd.on('input', function() {
            var val = $.trim(this.value);
            var bool = validatePWD(val, function(res) {
                $pwdLint.css({visibility: res.valid ? 'hidden' : 'visible'});

                if (!res.valid) {
                    $pwdLintTxt.text(res.msg);
                }
            });

            $nextBtn
                .toggleClass('disable', !bool)
                .prop('disabled', !bool);
        });
    },

    togglePassword: function() {
        var bool = $eyeBtn.hasClass('close');

        $eyeBtn.toggleClass(function() {
            $pwd.attr('type', !bool ? 'password' : 'text');
            return 'close';
        }, !bool);
    },

    setPasswordAndLogin: function() {
        var password = $.trim($pwd.val());
        var self = this;

        if ($nextBtn.prop('disabled')) {
            return;
        }

        $nextBtn.prop('disabled', true);
        $.post('/passport/sms_login/password.json', {
            password: password,
            smsCode: self.smsCode
        })
            .done(function(res) {
                if (res.code === 200) {
                    checkPoint('YB_SET_PASSWORD_ENSURE_C'); // 埋点
                    $nextBtn.off();
                    location.href = res.redirect;
                    return;
                }

                tip.show(res.message);
            })
            .fail(function() {
                tip.show('出错了, 请重试');
            })
            .always(function() {
                $nextBtn.prop('disabled', false);
            });
    }
};
$(function() {
    page.init();
});