现有一注册页面(表单),提交时要求所有的内容必输,原密码输入离开后,会校验,如果和自己的姓名拼音不一致,提示“原密码错”,光标定位在原密码输入框。原密码正确后,二次输入新密码,若二次新密码不一致,会提示“二次密码不一致”,光标定准在第一次密码输入框中。
时间: 2023-12-10 16:02:37 浏览: 22
这是一个很常见的前端表单校验问题,以下是一种实现方式:
1. 给所有必填项设置必填校验,如果有未填写的必填项,阻止表单提交并提示用户填写完整。
2. 给原密码输入框添加失去焦点事件,当用户离开该输入框时,校验原密码是否正确。如果不正确,提示用户原密码错误,并将光标定位在原密码输入框中。
3. 给第一次密码输入框添加失去焦点事件,当用户离开该输入框时,校验密码是否符合要求。如果不符合要求,提示用户密码不符合要求,并将光标定位在第一次密码输入框中。如果符合要求,则将光标定位在第二次密码输入框中。
4. 给第二次密码输入框添加失去焦点事件,当用户离开该输入框时,校验两次密码是否一致。如果不一致,提示用户两次密码输入不一致,并将光标定位在第一次密码输入框中。
以下是一个示例代码实现:
```javascript
// 获取表单元素
const form = document.querySelector('form');
const nameInput = document.querySelector('#name');
const passwordInput = document.querySelector('#password');
const newPasswordInput = document.querySelector('#newPassword');
const confirmNewPasswordInput = document.querySelector('#confirmNewPassword');
// 给所有必填项添加必填校验
form.addEventListener('submit', (event) => {
if (!nameInput.value || !passwordInput.value || !newPasswordInput.value || !confirmNewPasswordInput.value) {
event.preventDefault();
alert('请填写完整信息');
}
});
// 给原密码输入框添加失去焦点事件,校验原密码是否正确
passwordInput.addEventListener('blur', () => {
const namePinyin = '...'; // 根据用户姓名获取拼音
if (passwordInput.value !== namePinyin) {
alert('原密码错误');
passwordInput.focus();
}
});
// 给第一次密码输入框添加失去焦点事件,校验密码是否符合要求
newPasswordInput.addEventListener('blur', () => {
const password = newPasswordInput.value;
if (password.length < 6 || password.length > 12) {
alert('密码长度应为6-12位');
newPasswordInput.focus();
} else {
confirmNewPasswordInput.focus();
}
});
// 给第二次密码输入框添加失去焦点事件,校验两次密码是否一致
confirmNewPasswordInput.addEventListener('blur', () => {
const newPassword = newPasswordInput.value;
const confirmNewPassword = confirmNewPasswordInput.value;
if (newPassword !== confirmNewPassword) {
alert('两次密码输入不一致');
newPasswordInput.focus();
}
});
```
以上示例代码仅供参考,实际使用时需要根据具体情况进行调整。