Files
demo-workflow-repo/js/login.js

121 lines
3.6 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
* 登录功能实现
* 原生JavaScript不依赖框架
*/
document.addEventListener('DOMContentLoaded', function() {
const loginForm = document.getElementById('loginForm');
const usernameInput = document.getElementById('username');
const passwordInput = document.getElementById('password');
const usernameError = document.getElementById('username-error');
const passwordError = document.getElementById('password-error');
const formMessage = document.getElementById('form-message');
// 用于演示的模拟用户数据
const mockUsers = [
{ username: 'admin', password: 'admin123' },
{ username: 'user', password: 'user123' }
];
/**
* 表单提交处理
*/
loginForm.addEventListener('submit', function(e) {
e.preventDefault();
// 重置错误信息
resetErrors();
// 获取输入值
const username = usernameInput.value.trim();
const password = passwordInput.value.trim();
// 验证表单
let isValid = validateForm(username, password);
if (isValid) {
// 模拟登录请求
mockLogin(username, password);
}
});
/**
* 表单验证
*/
function validateForm(username, password) {
let isValid = true;
// 验证用户名
if (username === '') {
displayError(usernameError, '请输入用户名');
isValid = false;
} else if (username.length < 3) {
displayError(usernameError, '用户名长度必须至少为3个字符');
isValid = false;
}
// 验证密码
if (password === '') {
displayError(passwordError, '请输入密码');
isValid = false;
} else if (password.length < 6) {
displayError(passwordError, '密码长度必须至少为6个字符');
isValid = false;
}
return isValid;
}
/**
* 显示错误信息
*/
function displayError(element, message) {
element.textContent = message;
}
/**
* 重置错误信息
*/
function resetErrors() {
usernameError.textContent = '';
passwordError.textContent = '';
formMessage.textContent = '';
formMessage.className = 'form-message';
}
/**
* 模拟登录
*/
function mockLogin(username, password) {
// 显示加载状态
formMessage.textContent = '登录中...';
formMessage.className = 'form-message';
// 模拟网络延迟
setTimeout(function() {
// 检查用户是否存在
const user = mockUsers.find(user =>
user.username === username && user.password === password
);
if (user) {
// 登录成功
formMessage.textContent = '登录成功,即将跳转...';
formMessage.className = 'form-message success';
// 保存登录状态到本地存储
localStorage.setItem('isLoggedIn', 'true');
localStorage.setItem('username', username);
// 重定向到首页
setTimeout(function() {
window.location.href = 'index.html';
}, 1000);
} else {
// 登录失败
formMessage.textContent = '用户名或密码错误';
formMessage.className = 'form-message error';
}
}, 1000);
}
});