|
@@ -4,7 +4,7 @@
|
|
<head>
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
- <title>比赛报名系统</title>
|
|
|
|
|
|
+ <title>第六届广东省青少年创新思维及科技实践大赛(创新思维类选手报名)</title>
|
|
<style>
|
|
<style>
|
|
* {
|
|
* {
|
|
margin: 0;
|
|
margin: 0;
|
|
@@ -280,12 +280,9 @@
|
|
}
|
|
}
|
|
|
|
|
|
.menu-btn-add {
|
|
.menu-btn-add {
|
|
- position: absolute;
|
|
|
|
- right: 20px;
|
|
|
|
- top: 1px;
|
|
|
|
padding: 7px 15px;
|
|
padding: 7px 15px;
|
|
font-size: 14px;
|
|
font-size: 14px;
|
|
- background-color: #3498db;
|
|
|
|
|
|
+ background-color: #db3434;
|
|
color: white;
|
|
color: white;
|
|
border: none;
|
|
border: none;
|
|
border-radius: 5px;
|
|
border-radius: 5px;
|
|
@@ -294,6 +291,11 @@
|
|
text-align: center;
|
|
text-align: center;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ .menu-btn-add:nth-last-child(1) {
|
|
|
|
+ margin-left: 10px;
|
|
|
|
+ background-color: #3498db;
|
|
|
|
+ }
|
|
|
|
+
|
|
.step-container {
|
|
.step-container {
|
|
display: none;
|
|
display: none;
|
|
}
|
|
}
|
|
@@ -398,6 +400,17 @@
|
|
padding-bottom: 10px;
|
|
padding-bottom: 10px;
|
|
border-bottom: 1px solid #e0e0e0;
|
|
border-bottom: 1px solid #e0e0e0;
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ .button-Contestant{
|
|
|
|
+ display: none;
|
|
|
|
+ margin-right: 20px;
|
|
|
|
+ }
|
|
|
|
+ .button-Contestant.active{
|
|
|
|
+ display: block;
|
|
|
|
+ }
|
|
|
|
+ #registerBtn1{
|
|
|
|
+ display: none;
|
|
|
|
+ }
|
|
</style>
|
|
</style>
|
|
<script src="https://sdk.amazonaws.com/js/aws-sdk-2.235.1.min.js"></script>
|
|
<script src="https://sdk.amazonaws.com/js/aws-sdk-2.235.1.min.js"></script>
|
|
<script>
|
|
<script>
|
|
@@ -415,7 +428,7 @@
|
|
<nav>
|
|
<nav>
|
|
<img src="https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/a/logo.png" alt="logo"
|
|
<img src="https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/a/logo.png" alt="logo"
|
|
style="width: 40px;margin-right: 15px;"></img>
|
|
style="width: 40px;margin-right: 15px;"></img>
|
|
- <div class="event-name">第六届广东省青少年创新思维及科技实践大赛创新思维挑战赛(选手报名)</div>
|
|
|
|
|
|
+ <div class="event-name">第六届广东省青少年创新思维及科技实践大赛(创新思维类选手报名)</div>
|
|
|
|
|
|
</nav>
|
|
</nav>
|
|
|
|
|
|
@@ -476,9 +489,12 @@
|
|
<option value="2">智能体应用类</option>
|
|
<option value="2">智能体应用类</option>
|
|
</select>
|
|
</select>
|
|
</div> -->
|
|
</div> -->
|
|
- <div class="content-header">
|
|
|
|
|
|
+ <div class="content-header" style="display: flex;justify-content: space-between;">
|
|
<h2 style="display: inline-block;font-size: 24px;">参赛信息登记</h2>
|
|
<h2 style="display: inline-block;font-size: 24px;">参赛信息登记</h2>
|
|
- <button class="menu-btn-add" onclick="addContestant()">添加选手</button>
|
|
|
|
|
|
+ <div class="button-Contestant">
|
|
|
|
+ <button class="menu-btn-add" onclick="removeContestant()">删除选手</button>
|
|
|
|
+ <button class="menu-btn-add" onclick="addContestant()">添加选手</button>
|
|
|
|
+ </div>
|
|
</div>
|
|
</div>
|
|
<!-- 步骤1:选择比赛类型 -->
|
|
<!-- 步骤1:选择比赛类型 -->
|
|
<div id="step1" class="step-container active">
|
|
<div id="step1" class="step-container active">
|
|
@@ -487,12 +503,12 @@
|
|
<div class="competition-grid">
|
|
<div class="competition-grid">
|
|
<div class="competition-card" data-id="1">
|
|
<div class="competition-card" data-id="1">
|
|
<div class="competition-icon">🧮</div>
|
|
<div class="competition-icon">🧮</div>
|
|
- <div class="competition-name">桌游设计挑战类</div>
|
|
|
|
|
|
+ <div class="competition-name">桌游设计挑战</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<div class="competition-card" data-id="2">
|
|
<div class="competition-card" data-id="2">
|
|
<div class="competition-icon">💻</div>
|
|
<div class="competition-icon">💻</div>
|
|
- <div class="competition-name">智能体应用类</div>
|
|
|
|
|
|
+ <div class="competition-name">智能体应用</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
@@ -575,10 +591,10 @@
|
|
<label class="form-label required" for="group">组别</label>
|
|
<label class="form-label required" for="group">组别</label>
|
|
<select id="group1" class="form-input" required>
|
|
<select id="group1" class="form-input" required>
|
|
<option value="">请选择</option>
|
|
<option value="">请选择</option>
|
|
- <option value="1">小学组</option>
|
|
|
|
- <option value="2">初中组</option>
|
|
|
|
- <option value="3">高中组</option>
|
|
|
|
- <option value="4">大学组</option>
|
|
|
|
|
|
+ <option value="1">小学低龄</option>
|
|
|
|
+ <option value="2">小学高龄</option>
|
|
|
|
+ <option value="3">中学</option>
|
|
|
|
+ <option value="4">高校</option>
|
|
</select>
|
|
</select>
|
|
<div class="error" id="group-error1">请选择组别</div>
|
|
<div class="error" id="group-error1">请选择组别</div>
|
|
</div>
|
|
</div>
|
|
@@ -620,12 +636,6 @@
|
|
</form>
|
|
</form>
|
|
|
|
|
|
</div>
|
|
</div>
|
|
- <div class="file-upload" id="photoSection">
|
|
|
|
- <!-- <div class="upload-icon">📷</div> -->
|
|
|
|
- <label class="form-label required" for="photo">上传文件</label>
|
|
|
|
- <input type="file" id="photo" required>
|
|
|
|
- <div class="error" id="photo-error">请上传照片</div>
|
|
|
|
- </div>
|
|
|
|
<div class="button-group">
|
|
<div class="button-group">
|
|
<button type="button" class="btn btn-prev" id="prevToStep1">上一步</button>
|
|
<button type="button" class="btn btn-prev" id="prevToStep1">上一步</button>
|
|
<button type="submit" class="btn btn-submit" onclick="submitData()">提交报名</button>
|
|
<button type="submit" class="btn btn-submit" onclick="submitData()">提交报名</button>
|
|
@@ -659,8 +669,15 @@
|
|
|
|
|
|
<script>
|
|
<script>
|
|
const requesturl = window.location.href;
|
|
const requesturl = window.location.href;
|
|
- console.log("requesturl:",requesturl);
|
|
|
|
-
|
|
|
|
|
|
+ console.log("requesturl:", requesturl);
|
|
|
|
+
|
|
|
|
+ const nowTime = new Date();
|
|
|
|
+ const givenTime = new Date("2025-10-13")
|
|
|
|
+ if(givenTime - nowTime > 0){
|
|
|
|
+ document.getElementById('registerBtn1').style.display = "none";
|
|
|
|
+ }else{
|
|
|
|
+ document.getElementById('registerBtn1').style.display = "block";
|
|
|
|
+ }
|
|
// 切换下载和报名区域
|
|
// 切换下载和报名区域
|
|
document.getElementById('downloadBtn').addEventListener('click', function () {
|
|
document.getElementById('downloadBtn').addEventListener('click', function () {
|
|
document.getElementById('downloadBtn').classList.add('active');
|
|
document.getElementById('downloadBtn').classList.add('active');
|
|
@@ -669,6 +686,7 @@
|
|
document.getElementById('downloadSection').classList.add('active');
|
|
document.getElementById('downloadSection').classList.add('active');
|
|
document.getElementById('registrationSection').classList.remove('active');
|
|
document.getElementById('registrationSection').classList.remove('active');
|
|
document.getElementById('uploadSection').classList.remove('active');
|
|
document.getElementById('uploadSection').classList.remove('active');
|
|
|
|
+ document.getElementsByClassName("button-Contestant")[0].classList.remove('active');
|
|
});
|
|
});
|
|
document.getElementById('registerBtn1').addEventListener('click', function () {
|
|
document.getElementById('registerBtn1').addEventListener('click', function () {
|
|
document.getElementById('registerBtn1').classList.add('active');
|
|
document.getElementById('registerBtn1').classList.add('active');
|
|
@@ -677,7 +695,9 @@
|
|
document.getElementById('downloadSection').classList.remove('active');
|
|
document.getElementById('downloadSection').classList.remove('active');
|
|
document.getElementById('registrationSection').classList.remove('active');
|
|
document.getElementById('registrationSection').classList.remove('active');
|
|
document.getElementById('uploadSection').classList.add('active');
|
|
document.getElementById('uploadSection').classList.add('active');
|
|
|
|
+ document.getElementsByClassName("button-Contestant")[0].classList.remove('active');
|
|
});
|
|
});
|
|
|
|
+ let buttonContestant = false
|
|
document.getElementById('registerBtn').addEventListener('click', function () {
|
|
document.getElementById('registerBtn').addEventListener('click', function () {
|
|
document.getElementById('registerBtn').classList.add('active');
|
|
document.getElementById('registerBtn').classList.add('active');
|
|
document.getElementById('downloadBtn').classList.remove('active');
|
|
document.getElementById('downloadBtn').classList.remove('active');
|
|
@@ -685,44 +705,15 @@
|
|
document.getElementById('registrationSection').classList.add('active');
|
|
document.getElementById('registrationSection').classList.add('active');
|
|
document.getElementById('downloadSection').classList.remove('active');
|
|
document.getElementById('downloadSection').classList.remove('active');
|
|
document.getElementById('uploadSection').classList.remove('active');
|
|
document.getElementById('uploadSection').classList.remove('active');
|
|
- });
|
|
|
|
-
|
|
|
|
- let uploadFileUrl = ''
|
|
|
|
- document.getElementById('photo').addEventListener('change', function (e) {
|
|
|
|
- // 拼接文件名:身份证号_姓名_比赛类型_原文件名
|
|
|
|
- const idNumber = document.getElementById('idNumber1').value;
|
|
|
|
- if (!idNumber) {
|
|
|
|
- alert('请先填写身份证号');
|
|
|
|
- e.target.value = ''; // 清空已选择的文件
|
|
|
|
- return;
|
|
|
|
|
|
+ console.log("selectedCompetitionId:", selectedCompetitionId);
|
|
|
|
+ if(buttonContestant){
|
|
|
|
+ document.getElementsByClassName("button-Contestant")[0].classList.add('active');
|
|
|
|
+ }else{
|
|
|
|
+ document.getElementsByClassName("button-Contestant")[0].classList.remove('active');
|
|
}
|
|
}
|
|
- const file = e.target.files[0];
|
|
|
|
- if (!file) return;
|
|
|
|
- console.log('选择文件:', file);
|
|
|
|
-
|
|
|
|
- const fileName = `${idNumber}/${file.name}`;
|
|
|
|
-
|
|
|
|
- var bucket = new window.AWS.S3({ params: { Bucket: 'ccrb' } });
|
|
|
|
- var params = {
|
|
|
|
- Key: fileName,
|
|
|
|
- ContentType: file.type,
|
|
|
|
- Body: file,
|
|
|
|
- 'Access-Control-Allow-Credentials': '*',
|
|
|
|
- 'ACL': 'public-read'
|
|
|
|
- };
|
|
|
|
- console.log(params)
|
|
|
|
- bucket.upload(params, function (err, data) {
|
|
|
|
- if (err) {
|
|
|
|
- console.error('上传失败:', err);
|
|
|
|
- alert('文件上传失败');
|
|
|
|
- } else {
|
|
|
|
- console.log('上传成功:', data);
|
|
|
|
- uploadFileUrl = data.Location;
|
|
|
|
- alert('文件上传成功');
|
|
|
|
- }
|
|
|
|
- });
|
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
+ let uploadFileUrl = ''
|
|
// 比赛类型选择
|
|
// 比赛类型选择
|
|
const competitionCards = document.querySelectorAll('.competition-card');
|
|
const competitionCards = document.querySelectorAll('.competition-card');
|
|
let selectedCompetitionId = null;
|
|
let selectedCompetitionId = null;
|
|
@@ -747,24 +738,19 @@
|
|
alert('请先选择比赛类型');
|
|
alert('请先选择比赛类型');
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
-
|
|
|
|
- // 设置隐藏字段的值
|
|
|
|
- document.getElementById('competitionType').value = selectedCompetitionId;
|
|
|
|
- if (selectedCompetitionId == 1) {
|
|
|
|
- document.getElementById('photoSection').style.display = 'block';
|
|
|
|
- } else {
|
|
|
|
- document.getElementById('photoSection').style.display = 'none';
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
// 切换到步骤2
|
|
// 切换到步骤2
|
|
document.getElementById('step1').classList.remove('active');
|
|
document.getElementById('step1').classList.remove('active');
|
|
document.getElementById('step2').classList.add('active');
|
|
document.getElementById('step2').classList.add('active');
|
|
|
|
+ document.getElementsByClassName("button-Contestant")[0].classList.add('active');
|
|
|
|
+ buttonContestant = true
|
|
});
|
|
});
|
|
|
|
|
|
document.getElementById('prevToStep1').addEventListener('click', function () {
|
|
document.getElementById('prevToStep1').addEventListener('click', function () {
|
|
// 切换回步骤1
|
|
// 切换回步骤1
|
|
document.getElementById('step2').classList.remove('active');
|
|
document.getElementById('step2').classList.remove('active');
|
|
document.getElementById('step1').classList.add('active');
|
|
document.getElementById('step1').classList.add('active');
|
|
|
|
+ document.getElementsByClassName("button-Contestant")[0].classList.remove('active');
|
|
|
|
+ buttonContestant = false
|
|
});
|
|
});
|
|
|
|
|
|
let num = 1;
|
|
let num = 1;
|
|
@@ -779,114 +765,133 @@
|
|
const formCrate = document.createElement('form');
|
|
const formCrate = document.createElement('form');
|
|
formCrate.id = `registrationForm${num}`;
|
|
formCrate.id = `registrationForm${num}`;
|
|
formCrate.innerHTML = `<div class="form-row">
|
|
formCrate.innerHTML = `<div class="form-row">
|
|
- <div class="form-col">
|
|
|
|
- <div class="form-group">
|
|
|
|
- <label class="form-label required" for="name">姓名</label>
|
|
|
|
- <input type="text" id="name${num}" class="form-input" required>
|
|
|
|
- <div class="error" id="name-error${num}">请输入姓名</div>
|
|
|
|
- </div>
|
|
|
|
- </div>
|
|
|
|
|
|
+ <div class="form-col">
|
|
|
|
+ <div class="form-group">
|
|
|
|
+ <label class="form-label required" for="name">姓名</label>
|
|
|
|
+ <input type="text" id="name${num}" class="form-input" required>
|
|
|
|
+ <div class="error" id="name-error${num}">请输入姓名</div>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
|
|
- <div class="form-col">
|
|
|
|
- <div class="form-group">
|
|
|
|
- <label class="form-label required" for="gender">性别</label>
|
|
|
|
- <select id="gender${num}" class="form-input" required>
|
|
|
|
- <option value="">请选择</option>
|
|
|
|
- <option value="1">男</option>
|
|
|
|
- <option value="2">女</option>
|
|
|
|
- </select>
|
|
|
|
- <div class="error" id="gender-error${num}">请选择性别</div>
|
|
|
|
- </div>
|
|
|
|
- </div>
|
|
|
|
- </div>
|
|
|
|
|
|
+ <div class="form-col">
|
|
|
|
+ <div class="form-group">
|
|
|
|
+ <label class="form-label required" for="gender">性别</label>
|
|
|
|
+ <select id="gender${num}" class="form-input" required>
|
|
|
|
+ <option value="">请选择</option>
|
|
|
|
+ <option value="1">男</option>
|
|
|
|
+ <option value="2">女</option>
|
|
|
|
+ </select>
|
|
|
|
+ <div class="error" id="gender-error${num}">请选择性别</div>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
|
|
- <div class="form-row">
|
|
|
|
- <div class="form-col">
|
|
|
|
- <div class="form-group">
|
|
|
|
- <label class="form-label required" for="ethnicity">民族</label>
|
|
|
|
- <input type="text" id="ethnicity${num}" class="form-input" required>
|
|
|
|
- <div class="error" id="ethnicity-error${num}">请输入民族</div>
|
|
|
|
- </div>
|
|
|
|
- </div>
|
|
|
|
|
|
+ <div class="form-row">
|
|
|
|
+ <div class="form-col">
|
|
|
|
+ <div class="form-group">
|
|
|
|
+ <label class="form-label required" for="ethnicity">民族</label>
|
|
|
|
+ <input type="text" id="ethnicity${num}" class="form-input" required>
|
|
|
|
+ <div class="error" id="ethnicity-error${num}">请输入民族</div>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
|
|
- <div class="form-col">
|
|
|
|
- <div class="form-group">
|
|
|
|
- <label class="form-label required" for="birthdate">出生年月</label>
|
|
|
|
- <input type="date" id="birthdate${num}" class="form-input" required>
|
|
|
|
- <div class="error" id="birthdate-error${num}">请选择出生年月</div>
|
|
|
|
- </div>
|
|
|
|
- </div>
|
|
|
|
- </div>
|
|
|
|
|
|
+ <div class="form-col">
|
|
|
|
+ <div class="form-group">
|
|
|
|
+ <label class="form-label required" for="birthdate">出生年月</label>
|
|
|
|
+ <input type="date" id="birthdate${num}" class="form-input" required>
|
|
|
|
+ <div class="error" id="birthdate-error${num}">请选择出生年月</div>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
|
|
- <div class="form-row">
|
|
|
|
- <div class="form-col">
|
|
|
|
- <div class="form-group">
|
|
|
|
- <label class="form-label required" for="email">电子邮箱</label>
|
|
|
|
- <input type="email" id="email${num}" class="form-input" required>
|
|
|
|
- <div class="error" id="email-error${num}">请输入有效的电子邮箱</div>
|
|
|
|
- </div>
|
|
|
|
- </div>
|
|
|
|
|
|
+ <div class="form-row">
|
|
|
|
+ <div class="form-col">
|
|
|
|
+ <div class="form-group">
|
|
|
|
+ <label class="form-label required" for="email">电子邮箱</label>
|
|
|
|
+ <input type="email" id="email${num}" class="form-input" required>
|
|
|
|
+ <div class="error" id="email-error${num}">请输入有效的电子邮箱</div>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
|
|
- <div class="form-col">
|
|
|
|
- <div class="form-group">
|
|
|
|
- <label class="form-label required" for="idNumber">身份证号码</label>
|
|
|
|
- <input type="text" id="idNumber${num}" class="form-input" required pattern="\d{17}[\dXx]">
|
|
|
|
- <div class="error" id="idNumber-error${num}">请输入18位身份证号码</div>
|
|
|
|
- </div>
|
|
|
|
- </div>
|
|
|
|
- </div>
|
|
|
|
|
|
+ <div class="form-col">
|
|
|
|
+ <div class="form-group">
|
|
|
|
+ <label class="form-label required" for="idNumber">身份证号码</label>
|
|
|
|
+ <input type="text" id="idNumber${num}" class="form-input" required pattern="\d{17}[\dXx]">
|
|
|
|
+ <div class="error" id="idNumber-error${num}">请输入18位身份证号码</div>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
|
|
- <div class="form-row">
|
|
|
|
- <div class="form-col">
|
|
|
|
- <div class="form-group">
|
|
|
|
- <label class="form-label required" for="group">组别</label>
|
|
|
|
- <select id="group${num}" class="form-input" required>
|
|
|
|
- <option value="">请选择</option>
|
|
|
|
- <option value="1">小学组</option>
|
|
|
|
- <option value="2">初中组</option>
|
|
|
|
- <option value="3">高中组</option>
|
|
|
|
- <option value="4">大学组</option>
|
|
|
|
- </select>
|
|
|
|
- <div class="error" id="group-error${num}">请选择组别</div>
|
|
|
|
- </div>
|
|
|
|
- </div>
|
|
|
|
|
|
+ <div class="form-row">
|
|
|
|
+ <div class="form-col">
|
|
|
|
+ <div class="form-group">
|
|
|
|
+ <label class="form-label required" for="group">组别</label>
|
|
|
|
+ <select id="group${num}" class="form-input" required>
|
|
|
|
+ <option value="">请选择</option>
|
|
|
|
+ <option value="1">小学低龄</option>
|
|
|
|
+ <option value="2">小学高龄</option>
|
|
|
|
+ <option value="3">中学</option>
|
|
|
|
+ <option value="4">高校</option>
|
|
|
|
+ </select>
|
|
|
|
+ <div class="error" id="group-error${num}">请选择组别</div>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
|
|
- <div class="form-col">
|
|
|
|
- <div class="form-group">
|
|
|
|
- <label class="form-label required" for="grade">年级</label>
|
|
|
|
- <input type="text" id="grade${num}" class="form-input" required>
|
|
|
|
- <div class="error" id="grade-error${num}">请输入年级</div>
|
|
|
|
- </div>
|
|
|
|
- </div>
|
|
|
|
- </div>
|
|
|
|
|
|
+ <div class="form-col">
|
|
|
|
+ <div class="form-group">
|
|
|
|
+ <label class="form-label required" for="grade">年级</label>
|
|
|
|
+ <input type="text" id="grade${num}" class="form-input" required>
|
|
|
|
+ <div class="error" id="grade-error${num}">请输入年级</div>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
|
|
- <div class="form-row">
|
|
|
|
- <div class="form-col">
|
|
|
|
- <div class="form-group">
|
|
|
|
- <label class="form-label required" for="school">所在学校</label>
|
|
|
|
- <input type="text" id="school${num}" class="form-input" required>
|
|
|
|
- <div class="error" id="school-error${num}">请输入学校名称</div>
|
|
|
|
- </div>
|
|
|
|
- </div>
|
|
|
|
|
|
+ <div class="form-row">
|
|
|
|
+ <div class="form-col">
|
|
|
|
+ <div class="form-group">
|
|
|
|
+ <label class="form-label required" for="school">所在学校</label>
|
|
|
|
+ <input type="text" id="school${num}" class="form-input" required>
|
|
|
|
+ <div class="error" id="school-error${num}">请输入学校名称</div>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
|
|
- <div class="form-col">
|
|
|
|
- <div class="form-group">
|
|
|
|
- <label class="form-label required" for="schoolRegion">学校所在地区</label>
|
|
|
|
- <input type="text" id="schoolRegion${num}" class="form-input" required
|
|
|
|
- placeholder="省/市/区">
|
|
|
|
- <div class="error" id="schoolRegion-error${num}">请输入学校所在地区</div>
|
|
|
|
- </div>
|
|
|
|
- </div>
|
|
|
|
- </div>
|
|
|
|
|
|
+ <div class="form-col">
|
|
|
|
+ <div class="form-group">
|
|
|
|
+ <label class="form-label required" for="schoolRegion">学校所在地区</label>
|
|
|
|
+ <input type="text" id="schoolRegion${num}" class="form-input" required
|
|
|
|
+ placeholder="省/市/区">
|
|
|
|
+ <div class="error" id="schoolRegion-error${num}">请输入学校所在地区</div>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
|
|
- <div class="form-group">
|
|
|
|
- <label class="form-label required" for="phone">联系电话</label>
|
|
|
|
- <input type="tel" id="phone${num}" class="form-input" required pattern="[0-9]{11}">
|
|
|
|
- <div class="error" id="phone-error${num}">请输入11位手机号码</div>
|
|
|
|
- </div>`;
|
|
|
|
|
|
+ <div class="form-group">
|
|
|
|
+ <label class="form-label required" for="phone">联系电话</label>
|
|
|
|
+ <input type="tel" id="phone${num}" class="form-input" required pattern="[0-9]{11}">
|
|
|
|
+ <div class="error" id="phone-error${num}">请输入11位手机号码</div>
|
|
|
|
+ </div>`;
|
|
html.appendChild(formCrate);
|
|
html.appendChild(formCrate);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ function removeContestant() {
|
|
|
|
+ if (num <= 1) {
|
|
|
|
+ alert("至少需要保留一名选手");
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ const html = document.getElementById('formContainer');
|
|
|
|
+ // 移除最后一个选手的 h3、br 和 form
|
|
|
|
+ // h3
|
|
|
|
+ let lastH3 = html.querySelector(`h3:last-of-type`);
|
|
|
|
+ if (lastH3) html.removeChild(lastH3);
|
|
|
|
+ // br
|
|
|
|
+ let lastBr = html.querySelector(`br:last-of-type`);
|
|
|
|
+ if (lastBr) html.removeChild(lastBr);
|
|
|
|
+ // form
|
|
|
|
+ let lastForm = html.querySelector(`form#registrationForm${num}`);
|
|
|
|
+ if (lastForm) html.removeChild(lastForm);
|
|
|
|
+ num = num - 1;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
|
|
async function submitData() {
|
|
async function submitData() {
|
|
const requiredFields = ['name', 'gender', 'ethnicity', 'birthdate', 'email',
|
|
const requiredFields = ['name', 'gender', 'ethnicity', 'birthdate', 'email',
|
|
@@ -964,7 +969,7 @@
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
// 发送报名信息请求
|
|
// 发送报名信息请求
|
|
- const registerResponse = await fetch(requesturl+'api/user', {
|
|
|
|
|
|
+ const registerResponse = await fetch(requesturl + 'api/user', {
|
|
method: 'POST',
|
|
method: 'POST',
|
|
headers: {
|
|
headers: {
|
|
'Content-Type': 'application/json'
|
|
'Content-Type': 'application/json'
|
|
@@ -978,12 +983,12 @@
|
|
|
|
|
|
const registerData = await registerResponse.json();
|
|
const registerData = await registerResponse.json();
|
|
console.log(registerData);
|
|
console.log(registerData);
|
|
- if(registerData.status == "ok"){
|
|
|
|
|
|
+ if (registerData.status == "ok") {
|
|
alert("报名完成,审核情况会通过邮箱通知,请注意邮箱信息");
|
|
alert("报名完成,审核情况会通过邮箱通知,请注意邮箱信息");
|
|
- }else{
|
|
|
|
|
|
+ } else {
|
|
alert(registerData.message);
|
|
alert(registerData.message);
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
// document.getElementById('registrationForm').reset();
|
|
// document.getElementById('registrationForm').reset();
|
|
|
|
|
|
} catch (error) {
|
|
} catch (error) {
|
|
@@ -1041,8 +1046,8 @@
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
|
|
|
|
- try{
|
|
|
|
- const response = await fetch(requesturl+"api/update", {
|
|
|
|
|
|
+ try {
|
|
|
|
+ const response = await fetch(requesturl + "api/update", {
|
|
method: "POST",
|
|
method: "POST",
|
|
headers: {
|
|
headers: {
|
|
"Content-Type": "application/json"
|
|
"Content-Type": "application/json"
|
|
@@ -1052,7 +1057,7 @@
|
|
id_number: idNumber
|
|
id_number: idNumber
|
|
})
|
|
})
|
|
})
|
|
})
|
|
-
|
|
|
|
|
|
+
|
|
if (!response.ok) {
|
|
if (!response.ok) {
|
|
throw new Error('信息更新失败');
|
|
throw new Error('信息更新失败');
|
|
}
|
|
}
|
|
@@ -1060,7 +1065,7 @@
|
|
const registerData = await response.json();
|
|
const registerData = await response.json();
|
|
console.log(registerData);
|
|
console.log(registerData);
|
|
alert(registerData.message);
|
|
alert(registerData.message);
|
|
- }catch (error) {
|
|
|
|
|
|
+ } catch (error) {
|
|
console.error('信息更新失败:', error);
|
|
console.error('信息更新失败:', error);
|
|
alert(error.message);
|
|
alert(error.message);
|
|
}
|
|
}
|