register.js 2.62 KB
/**
 * 注册
 * @author: xuqi<qi.xu@yoho.cn>
 * @date: 2015/10/8
 */
var $ = require('yoho-jquery');

var $phoneNum = $('#phone-num'),
    $countrySelect = $('#country-select'),
    $areaCode = $('#area-code'),
    $captcha = $('#js-captcha'),
    $captchaPNG = $('.passport-captcha-png'),
    $btnNext = $('#btn-next');

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

var trim = $.trim;
var showErrTip = tip.show;

var requested = false;

api.selectCssHack($('#country-select'));

api.bindClearEvt();

/**
 * 必填校验
 */
function checkEnableNext() {
    var phone = trim($phoneNum.val());
    var area = trim($countrySelect.val());
    var captcha = trim($captcha.val());

    var ret = true;

    $.each([phone, area, captcha], function(i, val) {
        if (!val) {
            ret = false;
            return ret;
        }
    });

    return ret;
}


/**
 *  刷新 校验码
 */
function refreshCaptcha() {
    $captcha.val('').focus();
    $captchaPNG.attr('src', ['//m.yohobuy.com/passport/reg/captcha.png', '?t=', Date.now()].join(''));
}


/*
    Event bind
*/
$('.reg-page')
    .on('input', '.phone-num, #js-captcha', function() {
        $btnNext.toggleClass('disable', !checkEnableNext());
    })
    .on('click', '.passport-captcha-png', refreshCaptcha);

$countrySelect.change(function() {
    $areaCode.text($countrySelect.val());
});

$btnNext.on('touchstart', function() {
    var pn = trim($phoneNum.val()),
        areaCode = $countrySelect.val(),
        captcha = $captcha.val().trim();

    if (!captcha) {
        tip.show('请输入验证码');
        return false;
    }

    if ($btnNext.hasClass('disable')) {
        return;
    }

    if (requested) {
        return false;
    }


    if (api.phoneRegx[areaCode].test(pn)) {

        requested = true;

        $.ajax({
            url: '/passport/reg/verifymobile',
            type: 'POST',
            data: {
                areaCode: areaCode.replace('+', ''),
                phoneNum: pn,
                captcha: captcha,
                yohobuy: $('#yohobuy').val()
            },
            success: function(data) {
                if (data.code === 200) {
                    location.href = data.data;
                } else {
                    refreshCaptcha();

                    showErrTip(data.message);
                    requested = false;
                }
            },
            error: function() {
                showErrTip('出错了,请重试');
                refreshCaptcha();
                requested = false;
            }
        });
    } else {
        showErrTip('手机号格式不正确,请重新输入');
    }
});