使用 JS 语言编写代码实现如图所示的网页效果。要求: (1)输入框有提示内容,获取焦点时清空,进入输入状态。 (2)密码要求有数字大小写字母和一个特殊字符,可对两次输入密码进行 相同性校验。 (3)电话号码与邮箱可进行格式校验,当输入错误时,弹窗提示输入错误。 (4)出生日期输入框可使用日期控件输入。 (5)家庭地址可进行联动选择。 (6)附件上传按钮可用,选择了附件后输入框显示附件名称及文件格式。 (7)点击登录时跳转到登录页面(自定义一个包含用户名、密码输入框与 登录按钮的登陆页面)。
时间: 2023-12-31 22:03:38 浏览: 210
jQuery实现input输入框获取焦点与失去焦点时提示的消失与显示功能示例
由于这个问题比较复杂,涉及到很多的前端技术,我将会给出一个简要的实现思路,供您参考。
HTML代码:
```
<form>
<label for="username">用户名:</label>
<input type="text" id="username" placeholder="请输入用户名">
<label for="password">密码:</label>
<input type="password" id="password" placeholder="请输入密码">
<label for="password-confirm">确认密码:</label>
<input type="password" id="password-confirm" placeholder="请确认密码">
<label for="phone">电话号码:</label>
<input type="tel" id="phone" placeholder="请输入电话号码">
<label for="email">邮箱:</label>
<input type="email" id="email" placeholder="请输入邮箱">
<label for="birthdate">出生日期:</label>
<input type="date" id="birthdate">
<label for="address">家庭地址:</label>
<select id="province">
<option value="">请选择省份</option>
<!-- 省份选项 -->
</select>
<select id="city">
<option value="">请选择城市</option>
<!-- 城市选项 -->
</select>
<select id="district">
<option value="">请选择区县</option>
<!-- 区县选项 -->
</select>
<label for="attachment">附件上传:</label>
<input type="file" id="attachment">
<div id="attachment-name"></div>
<button type="submit" id="submit">登录</button>
</form>
```
JavaScript代码:
```
// 获取所有输入框和按钮
var usernameInput = document.getElementById('username');
var passwordInput = document.getElementById('password');
var passwordConfirmInput = document.getElementById('password-confirm');
var phoneInput = document.getElementById('phone');
var emailInput = document.getElementById('email');
var birthdateInput = document.getElementById('birthdate');
var provinceSelect = document.getElementById('province');
var citySelect = document.getElementById('city');
var districtSelect = document.getElementById('district');
var attachmentInput = document.getElementById('attachment');
var attachmentNameDiv = document.getElementById('attachment-name');
var submitButton = document.getElementById('submit');
// 提示内容
var usernamePlaceholder = '请输入用户名';
var passwordPlaceholder = '请输入密码';
var passwordConfirmPlaceholder = '请确认密码';
var phonePlaceholder = '请输入电话号码';
var emailPlaceholder = '请输入邮箱';
// 初始状态
usernameInput.value = usernamePlaceholder;
passwordInput.value = passwordPlaceholder;
passwordConfirmInput.value = passwordConfirmPlaceholder;
phoneInput.value = phonePlaceholder;
emailInput.value = emailPlaceholder;
// 输入框获取焦点时清空提示内容
usernameInput.addEventListener('focus', function() {
if (this.value === usernamePlaceholder) {
this.value = '';
}
});
passwordInput.addEventListener('focus', function() {
if (this.value === passwordPlaceholder) {
this.value = '';
}
});
passwordConfirmInput.addEventListener('focus', function() {
if (this.value === passwordConfirmPlaceholder) {
this.value = '';
}
});
phoneInput.addEventListener('focus', function() {
if (this.value === phonePlaceholder) {
this.value = '';
}
});
emailInput.addEventListener('focus', function() {
if (this.value === emailPlaceholder) {
this.value = '';
}
});
// 密码要求校验
function checkPassword() {
var password = passwordInput.value;
var passwordConfirm = passwordConfirmInput.value;
// 密码必须包含数字、大小写字母和一个特殊字符
var passwordRegex = /^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*\W).{8,}$/;
if (!passwordRegex.test(password)) {
alert('密码必须包含数字、大小写字母和一个特殊字符,长度至少为8个字符');
return false;
}
// 两次密码输入必须相同
if (password !== passwordConfirm) {
alert('两次密码输入不一致');
return false;
}
return true;
}
// 电话号码格式校验
function checkPhone() {
var phone = phoneInput.value;
var phoneRegex = /^1[3456789]\d{9}$/;
if (!phoneRegex.test(phone)) {
alert('电话号码格式不正确');
return false;
}
return true;
}
// 邮箱格式校验
function checkEmail() {
var email = emailInput.value;
var emailRegex = /^([a-zA-Z0-9]+[_|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,}$/;
if (!emailRegex.test(email)) {
alert('邮箱格式不正确');
return false;
}
return true;
}
// 家庭地址联动选择
function updateCityOptions() {
var province = provinceSelect.value;
var cities = []; // 根据省份选项获取城市选项
var optionsHtml = '<option value="">请选择城市</option>';
cities.forEach(function(city) {
optionsHtml += '<option value="' + city + '">' + city + '</option>';
});
citySelect.innerHTML = optionsHtml;
districtSelect.innerHTML = '<option value="">请选择区县</option>';
}
function updateDistrictOptions() {
var province = provinceSelect.value;
var city = citySelect.value;
var districts = []; // 根据省份和城市选项获取区县选项
var optionsHtml = '<option value="">请选择区县</option>';
districts.forEach(function(district) {
optionsHtml += '<option value="' + district + '">' + district + '</option>';
});
districtSelect.innerHTML = optionsHtml;
}
provinceSelect.addEventListener('change', updateCityOptions);
citySelect.addEventListener('change', updateDistrictOptions);
// 附件上传
attachmentInput.addEventListener('change', function() {
var file = this.files[0];
attachmentNameDiv.innerHTML = '文件名:' + file.name + ',文件类型:' + file.type;
});
// 登录验证
submitButton.addEventListener('click', function(event) {
event.preventDefault();
if (!checkPassword()) {
return;
}
if (!checkPhone()) {
return;
}
if (!checkEmail()) {
return;
}
// 跳转到登录页面
window.location.href = 'login.html';
});
```
这段代码实现了输入框的提示内容、密码要求校验、电话号码和邮箱格式校验、家庭地址联动选择、附件上传和登录验证等功能。其中,密码要求校验、电话号码和邮箱格式校验以及家庭地址联动选择的代码需要您自己根据实际需求实现。登录验证的代码中,当所有输入框的信息都符合要求时,会跳转到一个名为 "login.html" 的登录页面,您需要自己编写这个页面。
阅读全文