绘制UI界面
首先我们绘制出基本的不带功能的ui界面,这个界面需要创建一个表单,表单内包含一个username文本框,一个password文本框,一个登录按钮和一个注册按钮,目前它们都没有实现功能,因为并未引入js脚本。
注意登录操作一般使用post方法而不是get方法,因为后者会把用户提交的信息(如密码)直接显示在url内,这样非常不安全。
了解text文本框属性
text中有如下属性:
placeholder用于在用户输入值之前显示提示信息;
pattern用于检测用户输入的内容是否与要求匹配,这里用正则表达式"\w+"限定内容,指的是文本框中的内容必须只有字母、数字和下划线;
autofocus使得用户可以使用tab键在文本框之间跳转,方便用户使用;
tabindex配合autofocus使用,用于给控件排好序号(从1开始),这样用户按tab时就会从tabindex=1的控件逐个往下跳转,超出后便会循环。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Login System</title> </head> <body>
<form action="login/login.html" method="post" onsubmit="return SignIn()">
<table class="login-window"> <tr> <td><label for="username">Username:</label></td> <td><input id="username" pattern="\w+" type="text" placeholder="Enter your username" tabindex="1" autofocus></td> </tr> <tr> <td><label for="password">Password:</label></td> <td><input id="password" pattern="\w+" type="password" placeholder="Enter your password" tabindex="2"></td> </tr> <tr> <td><input id="sign-in-btn" type="submit" value="Sign in" tabindex="3"></td> <td><input id="sign-up-btn" type="button" value="Sign up" tabindex="4"></td> </tr> </table> </form> <div id="tst"></div> </body> </html>
|
UI界面效果
效果如下:

绘制登录后界面
接下来我们要写一个login界面,这样就为登录后提供了一个新的界面。
这里写的很简单,因为重点并不在此,登录后我们显示一个登录成功的信息,插入一张动图,并提供一个返回主页的按钮。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>login</title> </head> <body> <span> <p>Login finished!</p> <img src="../image/pic_yuigahama.gif" width="123" height="117" alt="pic_yuigahama"> <br/> <a href="../index.html" tabindex="1">Exit</a> </span> </body> </html>
|
效果如下:

实现登录验证脚本
最后我们要做的,就是判断用户是否登录成功。
事实上,如果要真正制作一个可以使用的登录界面,我们需要建立一个数据库来存储账户信息,此处只为演示登录效果,我们就直接把账户信息存入一个临时数组,这个数组的奇数位是用户名,偶数位是密码。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| var datalist = ["YuigahamaYui", "123456"];
window.onload=function() { document.getElementById('sign-up-btn').addEventListener('click', SignUp); };
function SignIn() { const username = document.getElementById('username').value; const password = document.getElementById('password').value; for (let i = 0; i < datalist.length; i += 2) { if (username === datalist[i] && password === datalist[i + 1]) return true; } alert("Login failed!"); return false; }
function SignUp() { const username = document.getElementById('username').value; const password = document.getElementById('password').value; datalist.push(username); datalist.push(password); alert("Register finished!"); }
|
运行效果
到了这里,我们就差不多实现了一个登录窗口的完整功能,此时只要在文本框中输入对应的用户名“YuigamahaYui”和密码“123456”,由比滨就可以登录到她的界面了!若是登录失败,则会弹出提示信息。


此时雪乃想登录网页,但她并没有注册,此时便会报错。
此时只需要点击注册,雪乃的账户信息就被填入模拟数据库啦!

再次发起登录,便显示登录成功。
