Authored by unknown

conflict index.scss

@@ -20,10 +20,18 @@ @@ -20,10 +20,18 @@
20 <li class="relative"> 20 <li class="relative">
21 <input id="account" class="account input va" name="account" type="text" placeholder="邮箱/手机号码" autocomplete="off"> 21 <input id="account" class="account input va" name="account" type="text" placeholder="邮箱/手机号码" autocomplete="off">
22 <ul id="email-autocomplete" class="email-autocomplete hide"></ul> 22 <ul id="email-autocomplete" class="email-autocomplete hide"></ul>
  23 + <span class="err-tip hide">
  24 + <i></i>
  25 + <em></em>
  26 + </span>
23 </li> 27 </li>
24 <li class="relative"> 28 <li class="relative">
25 <input id="password" class="password input va" name="password" type="text" placeholder="密码" autocomplete="off" maxlength="20"> 29 <input id="password" class="password input va" name="password" type="text" placeholder="密码" autocomplete="off" maxlength="20">
26 <span id="caps-lock" class="caps-lock hide">大写状态开启</span> 30 <span id="caps-lock" class="caps-lock hide">大写状态开启</span>
  31 + <span class="err-tip hide">
  32 + <i></i>
  33 + <em>请输入密码</em>
  34 + </span>
27 </li> 35 </li>
28 <li> 36 <li>
29 <span id="login-btn" class="login-btn btn">登录</span> 37 <span id="login-btn" class="login-btn btn">登录</span>
@@ -10,7 +10,12 @@ var mailPostfix = { @@ -10,7 +10,12 @@ var mailPostfix = {
10 other: ['gmail.com', 'qq.com', '163.com', '126.com', 'sina.com', 'sohu.com', 'hotmail.com', '139.com', '189.com'] 10 other: ['gmail.com', 'qq.com', '163.com', '126.com', 'sina.com', 'sohu.com', 'hotmail.com', '139.com', '189.com']
11 }; 11 };
12 12
13 -var $account = $('#account'); 13 +var $account = $('#account'),
  14 + $password = $('#password');
  15 +
  16 +var $accountTip = $account.siblings('.err-tip'),
  17 + $passwordTip = $password.siblings('.err-tip'),
  18 + $capsLock = $('#caps-lock');
14 19
15 var $countryCodeHide = $('#country-code-hide'), 20 var $countryCodeHide = $('#country-code-hide'),
16 $countryCodeEm = $('#country-code > em'), 21 $countryCodeEm = $('#country-code > em'),
@@ -18,6 +23,8 @@ var $countryCodeHide = $('#country-code-hide'), @@ -18,6 +23,8 @@ var $countryCodeHide = $('#country-code-hide'),
18 23
19 var $emailAutoComplete = $('#email-autocomplete'); 24 var $emailAutoComplete = $('#email-autocomplete');
20 25
  26 +var mailPhoneRegx = require('./mail-phone-regx');
  27 +
21 //checkbox status unicode 28 //checkbox status unicode
22 var checkbox = { 29 var checkbox = {
23 checked: '&#xe612;', 30 checked: '&#xe612;',
@@ -26,6 +33,95 @@ var checkbox = { @@ -26,6 +33,95 @@ var checkbox = {
26 33
27 var emailAcTime; 34 var emailAcTime;
28 35
  36 +//验证账户名
  37 +function validateAccount() {
  38 + var pass = false,
  39 + account = $.trim($account.val()),
  40 + err;
  41 +
  42 + if (account !== '') {
  43 + if (/^[0-9]+$/.test(account)) {
  44 +
  45 + //如果是纯数字,则作为手机号码处理
  46 + if (mailPhoneRegx.phoneRegx['+' + $countryCodeHide.val()].test(account)) {
  47 + pass = true;
  48 + } else {
  49 + pass = false;
  50 + err = '手机号码不正确,请重新输入';
  51 + }
  52 + } else {
  53 + if (mailPhoneRegx.emailRegx.test(account)) {
  54 + pass = true;
  55 + } else {
  56 + pass = false;
  57 + err = '邮箱格式不正确,请重新输入';
  58 + }
  59 + }
  60 + } else {
  61 + err = '请输入账户名';
  62 + }
  63 +
  64 + if (pass) {
  65 + $accountTip.addClass('hide');
  66 + $account.removeClass('error');
  67 + } else {
  68 + $accountTip.removeClass('hide').children('em').text(err);
  69 + $account.addClass('error');
  70 + }
  71 + return pass;
  72 +}
  73 +
  74 +//验证密码
  75 +function validatePassword() {
  76 + var pass = false,
  77 + password = $.trim($password.val()),
  78 + err;
  79 +
  80 + if (password !== '') {
  81 + if (password.length < 6) {
  82 + err = '请输入长度为6-20字符的密码';
  83 + } else {
  84 + pass = true;
  85 + }
  86 + } else {
  87 + err = '请输入密码';
  88 + }
  89 +
  90 + if (pass) {
  91 + $passwordTip.addClass('hide');
  92 + $password.removeClass('error');
  93 + } else {
  94 + $passwordTip.removeClass('hide').children('em').text(err);
  95 + $password.addClass('error');
  96 + }
  97 +}
  98 +
  99 +//验证
  100 +function validate() {
  101 + var pass = true,
  102 + account = $.trim($account.val()),
  103 + password = $.trim($password.val());
  104 +
  105 + if (account !== '') {
  106 + pass = validateAccount() && validatePassword();
  107 + } else {
  108 + pass = false;
  109 + $account.addClass('error');
  110 +
  111 + if (password === '') {
  112 +
  113 + //账户名和密码都为空的情况下点击登陆,只在账户输入框后显示错误提示
  114 + $accountTip.addClass('both-error').removeClass('hide').children('em').text('请输入账户名和密码');
  115 + $passwordTip.addClass('hide');
  116 + $password.addClass('error');
  117 + } else {
  118 + $accountTip.removeClass('hide').children('em').text('请输入账户名');
  119 + }
  120 + }
  121 +
  122 + return pass;
  123 +}
  124 +
29 //展开地区列表 125 //展开地区列表
30 $('#country-code').on('click', function() { 126 $('#country-code').on('click', function() {
31 if ($countryList.css('display') === 'none') { 127 if ($countryList.css('display') === 'none') {
@@ -56,7 +152,7 @@ $(document).on('click', function(e) { @@ -56,7 +152,7 @@ $(document).on('click', function(e) {
56 } 152 }
57 }); 153 });
58 154
59 -//邮箱自动完成 155 +//邮箱
60 $account.on('keyup', function() { 156 $account.on('keyup', function() {
61 var account = $.trim($(this).val()), 157 var account = $.trim($(this).val()),
62 html = '', 158 html = '',
@@ -95,14 +191,34 @@ $account.on('keyup', function() { @@ -95,14 +191,34 @@ $account.on('keyup', function() {
95 }).on('blur', function() { 191 }).on('blur', function() {
96 emailAcTime = setTimeout(function() { 192 emailAcTime = setTimeout(function() {
97 $emailAutoComplete.addClass('hide'); 193 $emailAutoComplete.addClass('hide');
  194 +
  195 + //验证
  196 + validateAccount();
98 }, 200); 197 }, 200);
  198 +
  199 +});
  200 +
  201 +//密码
  202 +$password.on('blur', function() {
  203 + validatePassword();
  204 +}).on('keypress', function(e) {
  205 + var code = e.which,
  206 + isShift = e.shiftKey || (code === 16) || false;
  207 +
  208 + //CapsLock检测
  209 + if ((!isShift && (code >= 65 && code <= 90)) ||
  210 + (isShift && (code >= 97 && code <= 122))) {
  211 + $capsLock.removeClass('hide');
  212 + return;
  213 + }
  214 + $capsLock.addClass('hide');
99 }); 215 });
100 216
101 //邮箱自动完成列表项点击 217 //邮箱自动完成列表项点击
102 $emailAutoComplete.on('click', 'li', function() { 218 $emailAutoComplete.on('click', 'li', function() {
103 clearTimeout(emailAcTime); //清空默认关闭 219 clearTimeout(emailAcTime); //清空默认关闭
104 220
105 - $account.val($(this).text()); 221 + $account.val($(this).text()).focus();
106 222
107 $emailAutoComplete.addClass('hide'); 223 $emailAutoComplete.addClass('hide');
108 }); 224 });
@@ -118,4 +234,22 @@ $('.remeber-me').on('click', function() { @@ -118,4 +234,22 @@ $('.remeber-me').on('click', function() {
118 } else { 234 } else {
119 $this.children('i').html(checkbox.unchecked); 235 $this.children('i').html(checkbox.unchecked);
120 } 236 }
  237 +});
  238 +
  239 +//focus到输入框则隐藏错误提示和样式
  240 +$('.va').on('focus', function() {
  241 + var $this = $(this);
  242 +
  243 + $this.removeClass('error');
  244 +
  245 + $this.siblings('.err-tip').addClass('hide');
  246 +});
  247 +
  248 +//登录
  249 +$('#login-btn').on('click', function() {
  250 + var pass = validate();
  251 +
  252 + if (pass) {
  253 + $('#login-form').submit();
  254 + }
121 }); 255 });
1 @import "login", "register", "back"; 1 @import "login", "register", "back";
2 2
  3 +$tip: sprite-map("passport/tip/*.png", $spacing: 10px);
  4 +/**/
  5 +
3 .passport-page { 6 .passport-page {
4 width: 1150px; 7 width: 1150px;
5 margin-left: auto; 8 margin-left: auto;
@@ -37,6 +40,8 @@ @@ -37,6 +40,8 @@
37 background-color: #ff1901; 40 background-color: #ff1901;
38 letter-spacing: 10px; 41 letter-spacing: 10px;
39 font-size: 20px; 42 font-size: 20px;
  43 + cursor: pointer;
  44 +
40 &.disable { 45 &.disable {
41 background-color: #555; 46 background-color: #555;
42 cursor: default; 47 cursor: default;
@@ -105,6 +110,24 @@ @@ -105,6 +110,24 @@
105 color: #b9b9b9; 110 color: #b9b9b9;
106 } 111 }
107 } 112 }
  113 + .err-tip {
  114 + position: absolute;
  115 + font-size: 14px;
  116 + white-space: nowrap;
  117 + top: 8px;
  118 + left: 285px;
  119 + padding: 6px 0;
  120 + color: #f00;
  121 +
  122 + i {
  123 + display: block;
  124 + float: left;
  125 + height: 14px;
  126 + width: 14px;
  127 + background: sprite($tip, error) no-repeat;
  128 + margin-right: 5px;
  129 + }
  130 + }
108 } 131 }
109 132
110 .passport-cover { 133 .passport-cover {
1 -@import "passport/*.png";  
2 -$third: sprite-map("passport/*.png"); 1 +$third: sprite-map("passport/third/*.png");
3 2
4 .login-page { 3 .login-page {
5 .relative { 4 .relative {