email-new.js 2.07 KB
import $ from 'yoho-jquery';
import api from '../api';
import tip from 'js/plugin/tip';
import Page from 'js/yoho-page';

const showErrTip = tip.show;

class EmailNew extends Page {
    constructor() {
        super();

        this.selector = {
            emailInput: $('input[name=email]'),
            clearEmailBtn: $('#clearEmail'),
            backEmailResetBtn: $('#backEmailResetBtn'),
        };
        this.init();
    }

    init() {
        this.bindEvents();
    }

    bindEvents() {
        this.selector.emailInput.on('input', this.changeBtnStatus.bind(this));
        this.selector.clearEmailBtn.on('click', this.clearEmailBtn.bind(this));
        this.selector.backEmailResetBtn.on('click', this.backEmailReset.bind(this));
    }

    /**
     * 监听输入,改变按钮状态
     */
    changeBtnStatus() {
        let email = $.trim(this.selector.emailInput.val());

        /**
         * 清除邮箱按钮
         */
        if (email) {
            this.selector.clearEmailBtn.removeClass('hide');
        } else {
            this.selector.clearEmailBtn.addClass('hide');
        }

        /**
         * 提交表单按钮
         */
        if (api.emailRegx.test(email)) {
            this.selector.backEmailResetBtn.addClass('active');
        } else {
            this.selector.backEmailResetBtn.removeClass('active');
        }
    }

    /**
     * 清除 email
     */
    clearEmailBtn() {
        this.selector.emailInput.val('');
        this.selector.clearEmailBtn.addClass('hide');
    }

    /**
     * 提交表单
     */
    backEmailReset() {
        let email = $.trim(this.selector.emailInput.val());

        if (!api.emailRegx.test(email)) {
            return;
        }

        this.ajax({
            url: '/passport/back/sendemail',
            type: 'POST',
            data: {
                email: email
            }
        }).then(result => {
            if (result.code === 200) {
                location.href = result.data;
            } else {
                showErrTip(result.message);
            }
        });
    }
}

module.exports = EmailNew;