You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
183 lines
8.1 KiB
183 lines
8.1 KiB
|
6 days ago
|
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
|
||
|
|
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
|
||
|
|
<!DOCTYPE html>
|
||
|
|
<html lang="zh-CN">
|
||
|
|
<head>
|
||
|
|
<meta charset="UTF-8">
|
||
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
|
|
<title>添加学生 - 学生信息管理系统</title>
|
||
|
|
<link rel="stylesheet" href="${pageContext.request.contextPath}/css/style.css">
|
||
|
|
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
|
||
|
|
<script>
|
||
|
|
$(function() {
|
||
|
|
// Ajax校验学号是否已存在
|
||
|
|
var studentNoAvailable = false;
|
||
|
|
|
||
|
|
$("#studentNo").blur(function() {
|
||
|
|
var studentNo = $(this).val().trim();
|
||
|
|
if (studentNo === "") {
|
||
|
|
$("#studentNoTip").text("请输入学号").css("color", "#e74c3c");
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
$.ajax({
|
||
|
|
url: "${pageContext.request.contextPath}/checkStudentNo",
|
||
|
|
type: "GET",
|
||
|
|
data: {studentNo: studentNo},
|
||
|
|
dataType: "json",
|
||
|
|
success: function(res) {
|
||
|
|
if (res.available) {
|
||
|
|
$("#studentNoTip").text("✓ 学号可用").css("color", "#27ae60");
|
||
|
|
studentNoAvailable = true;
|
||
|
|
} else {
|
||
|
|
$("#studentNoTip").text("✗ 学号已存在").css("color", "#e74c3c");
|
||
|
|
studentNoAvailable = false;
|
||
|
|
}
|
||
|
|
},
|
||
|
|
error: function() {
|
||
|
|
$("#studentNoTip").text("校验失败,请重试").css("color", "#e67e22");
|
||
|
|
}
|
||
|
|
});
|
||
|
|
});
|
||
|
|
|
||
|
|
// 表单验证
|
||
|
|
$("#addForm").submit(function(e) {
|
||
|
|
var studentNo = $("#studentNo").val().trim();
|
||
|
|
var name = $("#name").val().trim();
|
||
|
|
var gender = $("#gender").val();
|
||
|
|
|
||
|
|
if (studentNo === "") {
|
||
|
|
alert("请输入学号");
|
||
|
|
$("#studentNo").focus();
|
||
|
|
e.preventDefault();
|
||
|
|
return false;
|
||
|
|
}
|
||
|
|
if (name === "") {
|
||
|
|
alert("请输入姓名");
|
||
|
|
$("#name").focus();
|
||
|
|
e.preventDefault();
|
||
|
|
return false;
|
||
|
|
}
|
||
|
|
if (gender === "") {
|
||
|
|
alert("请选择性别");
|
||
|
|
e.preventDefault();
|
||
|
|
return false;
|
||
|
|
}
|
||
|
|
return true;
|
||
|
|
});
|
||
|
|
});
|
||
|
|
</script>
|
||
|
|
</head>
|
||
|
|
<body>
|
||
|
|
<div class="container">
|
||
|
|
<!-- 导航栏 -->
|
||
|
|
<nav class="navbar">
|
||
|
|
<div class="nav-brand">
|
||
|
|
<a href="${pageContext.request.contextPath}/">学生信息管理系统</a>
|
||
|
|
</div>
|
||
|
|
<div class="nav-links">
|
||
|
|
<c:if test="${loginUser.isAdmin()}">
|
||
|
|
<a href="${pageContext.request.contextPath}/admin/user?action=list">用户管理</a>
|
||
|
|
</c:if>
|
||
|
|
<a href="${pageContext.request.contextPath}/student?action=list">学生列表</a>
|
||
|
|
<a href="${pageContext.request.contextPath}/addStudent" class="active">添加学生</a>
|
||
|
|
<a href="${pageContext.request.contextPath}/profile">${loginUser.realName != null ? loginUser.realName : loginUser.username}</a>
|
||
|
|
<a href="${pageContext.request.contextPath}/logout">退出</a>
|
||
|
|
</div>
|
||
|
|
</nav>
|
||
|
|
|
||
|
|
<!-- 页面标题 -->
|
||
|
|
<div class="page-header">
|
||
|
|
<h2>添加学生</h2>
|
||
|
|
<div class="header-actions">
|
||
|
|
<a href="${pageContext.request.contextPath}/student?action=list" class="btn btn-secondary">返回列表</a>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
<!-- 错误提示 -->
|
||
|
|
<c:if test="${not empty error}">
|
||
|
|
<div class="alert alert-error">${error}</div>
|
||
|
|
</c:if>
|
||
|
|
|
||
|
|
<!-- 添加表单 -->
|
||
|
|
<div class="form-container">
|
||
|
|
<form id="addForm" action="${pageContext.request.contextPath}/addStudent" method="post" class="data-form">
|
||
|
|
<div class="form-row">
|
||
|
|
<div class="form-group">
|
||
|
|
<label for="studentNo">学号 <span class="required">*</span></label>
|
||
|
|
<input type="text" id="studentNo" name="studentNo" class="form-control" required maxlength="20">
|
||
|
|
<span id="studentNoTip" class="form-tip"></span>
|
||
|
|
</div>
|
||
|
|
<div class="form-group">
|
||
|
|
<label for="name">姓名 <span class="required">*</span></label>
|
||
|
|
<input type="text" id="name" name="name" class="form-control" required maxlength="50">
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
<div class="form-row">
|
||
|
|
<div class="form-group">
|
||
|
|
<label for="gender">性别 <span class="required">*</span></label>
|
||
|
|
<select id="gender" name="gender" class="form-control" required>
|
||
|
|
<option value="">请选择</option>
|
||
|
|
<option value="男">男</option>
|
||
|
|
<option value="女">女</option>
|
||
|
|
</select>
|
||
|
|
</div>
|
||
|
|
<div class="form-group">
|
||
|
|
<label for="age">年龄</label>
|
||
|
|
<input type="number" id="age" name="age" class="form-control" min="1" max="100">
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
<div class="form-row">
|
||
|
|
<div class="form-group">
|
||
|
|
<label for="className">班级</label>
|
||
|
|
<input type="text" id="className" name="className" class="form-control" maxlength="50">
|
||
|
|
</div>
|
||
|
|
<div class="form-group">
|
||
|
|
<label for="major">专业</label>
|
||
|
|
<input type="text" id="major" name="major" class="form-control" maxlength="50">
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
<div class="form-row">
|
||
|
|
<div class="form-group">
|
||
|
|
<label for="phone">联系电话</label>
|
||
|
|
<input type="text" id="phone" name="phone" class="form-control" maxlength="20">
|
||
|
|
</div>
|
||
|
|
<div class="form-group">
|
||
|
|
<label for="email">电子邮箱</label>
|
||
|
|
<input type="email" id="email" name="email" class="form-control" maxlength="100">
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
<div class="form-row">
|
||
|
|
<div class="form-group">
|
||
|
|
<label for="birthday">出生日期</label>
|
||
|
|
<input type="date" id="birthday" name="birthday" class="form-control">
|
||
|
|
</div>
|
||
|
|
<div class="form-group">
|
||
|
|
<label for="status">状态</label>
|
||
|
|
<select id="status" name="status" class="form-control">
|
||
|
|
<option value="在读" selected>在读</option>
|
||
|
|
<option value="休学">休学</option>
|
||
|
|
<option value="毕业">毕业</option>
|
||
|
|
</select>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
<div class="form-group full-width">
|
||
|
|
<label for="address">家庭住址</label>
|
||
|
|
<textarea id="address" name="address" class="form-control" rows="2" maxlength="200"></textarea>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
<div class="form-actions">
|
||
|
|
<button type="submit" class="btn btn-primary">提交保存</button>
|
||
|
|
<button type="reset" class="btn btn-secondary">重置</button>
|
||
|
|
<a href="${pageContext.request.contextPath}/student?action=list" class="btn btn-secondary">取消</a>
|
||
|
|
</div>
|
||
|
|
</form>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
</body>
|
||
|
|
</html>
|