conflict index.scss
Showing
16 changed files
with
169 additions
and
5 deletions
@@ -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> |
web-static/img/passport/tip-saf0e57100e.png
0 → 100644

1.3 KB
web-static/img/passport/tip/block.png
0 → 100644

1.33 KB
web-static/img/passport/tip/error.png
0 → 100644

1.18 KB
web-static/img/passport/tip/info.png
0 → 100644

1.2 KB
web-static/img/passport/tip/success.png
0 → 100644

1.21 KB
web-static/img/passport/tip/warn.png
0 → 100644

1.17 KB
@@ -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: '', | 30 | checked: '', |
@@ -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 { |
-
Please register or login to post a comment