Blame view

public/js/passport/back/email-new.js 2.07 KB
郭成尧 authored
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
import $ from 'yoho-jquery';
import api from '../api';
import tip from 'plugin/tip';
import Page from '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;