/** * 找回密码 * @author: xuqi<qi.xu@yoho.cn> * @date: 2015/12/14 */ var $ = require('yoho-jquery'); var regx = require('../common/mail-phone-regx'); var Captcha = require('../../plugins/captcha'); var emailAc = require('../common/ac-email'); // 邮箱自动完成 var emailReg = regx.emailRegx, phoneRegx = regx.phoneRegx; var $cr = $('#country-code-hide'), $phoneNum = $('#phone-num'), $ca = $('#captcha'), $ccList = $('#country-code-list'), $cc = $('#country-code'), $btn = $('#find-btn'), $accErr = $('#account-err'), caCount = 4, // 验证码位数 hasPh = false, captcha = new Captcha('#captcha-img').init(); require('../../simple-header'); require('yoho-jquery-placeholder'); require('../../common/promise'); function vaPn(v) { var pass = true, errTxt = ''; v = $.trim(v); if (v !== '') { if (/^[0-9]+$/.test(v)) { if (phoneRegx[$cr.val()].test(v)) { pass = true; } else { errTxt = '手机号码格式不正确, 请重新输入'; pass = false; } } else { if (emailReg.test(v)) { pass = true; } else { errTxt = '邮箱格式不正确, 请重新输入'; pass = false; } } } else { errTxt = '账户名不能为空'; pass = false; } hasPh = pass; return { pass: pass, errTxt: errTxt }; } function validatePhone() { var pnVa = vaPn($phoneNum.val()); if (pnVa.pass) { $accErr.addClass('hide'); $phoneNum.removeClass('error'); } else { $accErr.removeClass('hide').find('em').text(pnVa.errTxt); $phoneNum.addClass('error'); } return pnVa.pass; } emailAc($phoneNum, function() { validatePhone(); }); $ca.attr('maxlength', caCount); // IE8 placeholder $('input').placeholder(); $cc.on('click', function(e) { e.stopPropagation(); if ($ccList.css('style') === 'block') { $ccList.slideUp('fast'); } else { $ccList.slideDown('fast'); } }); $ccList.delegate('li', 'click', function(e) { var $cur = $(this), code = $cur.data('cc'), pnVa; e.stopPropagation(); $cr.val(code); $cc.find('em').html($cur.text()); // 切换后验证手机号码 if ($.trim($phoneNum.val()) !== '') { pnVa = vaPn($phoneNum.val()); if (hasPh) { $accErr.addClass('hide'); $phoneNum.removeClass('error'); } else { $accErr.removeClass('hide').text(pnVa.errTxt); $phoneNum.addClass('error'); } } $ccList.slideUp('fast'); }); $(document).click(function() { if ($ccList.css('display') === 'block') { $ccList.slideUp(); } }); $phoneNum.keyup(function() { vaPn($.trim($(this).val())); }).focus(function() { $(this).removeClass('error'); // focus隐藏错误提示 $accErr.addClass('hide'); }); // 下一步 $btn.click(function(e) { if (!validatePhone()) { return; } if (/^[0-9]+$/.test($.trim($phoneNum.val()))) { $('#find-form').attr('action', '/passport/back/mobile'); } if (hasPh) { $.post('/passport/back/email', { verifyCode: captcha.getResults(), phoneNum: $('#phone-num').val(), area: $('#country-code-hide').val() }).then(function(result) { if (result.code === 200) { window.jumpUrl(result.data.refer); return; } if (result.code === 402) { $accErr.removeClass('hide').find('em').text('该账号不存在'); $phoneNum.addClass('error'); captcha.refresh(); return $.Deferred().reject().promise();//eslint-disable-line } if (result.code === 405) { captcha.showTip(result.message); $accErr.addClass('hide'); $phoneNum.removeClass('error'); return; } $accErr.removeClass('hide').find('em').text(result.message); $phoneNum.addClass('error'); }); } e.preventDefault(); return true; }); captcha.onSuccess(function() { $btn.triggerHandler('click'); });