sms-login.page.js 2.29 KB
'use strict';

var tip = require('plugin/tip');
var api = require('./api');

var $countrySelect,
    $areaCode,
    $nextBtn,
    $resetBtn,
    $phoneNum;

var page = {
    init: function() {
        this.domInit();
        this.bindEvent();
    },
    domInit: function() {
        $countrySelect = $('#country-select');
        $areaCode = $('#area-code');
        $nextBtn = $('#btn-next');
        $phoneNum = $('#phone-num');
        $resetBtn = $('.clear-input');
    },
    bindEvent: function() {
        var self = this;

        $countrySelect.on('change', function() {
            $areaCode.text(this.value);
        });
        $phoneNum.on('input', function() {
            self.toggleNextBtn();
        });

        $nextBtn.on('click', function() {
            self.goNext();
        });

        $resetBtn.on('click', function() {
            $phoneNum.val('');
            $nextBtn
                .prop('disabled', true)
                .toggleClass('disable', true);
            $resetBtn.hide();
        });
    },

    // 切换$nextBtn disable状态
    toggleNextBtn: function() {
        var bool = Boolean($.trim($phoneNum.val()));

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

        $resetBtn.toggle(bool);
    },

    // 提交按钮
    goNext: function() {
        var areaCode = $countrySelect.val();
        var phone = $.trim($phoneNum.val());

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

        if (!api.phoneRegx[areaCode].test(phone)) {
            tip.show('手机号码格式不正确, 请重新输入');
            return;
        }

        $nextBtn.prop('disabled', true);
        $.get('/passport/sms_login/token.json', {
            area: areaCode.replace('+', ''),
            mobile: phone
        })
            .done(function(data) {
                if (data.code === 200) {
                    // $nextBtn.off();
                    location.href = data.redirect;
                } else {
                    tip.show(data.message);
                }
            })
            .fail(function() {
                tip.show('出错了, 请重试');
            })
            .always(function() {
                $nextBtn.prop('disabled', false);
            });



    }
};

$(function() {
    page.init();
});