javascript - Javascript表单验证按钮:表单有效后进入下一页
问题描述
我的表单验证工作得很好,但是在表单有效后,当我单击提交按钮时它不会进入下一页这是代码的 html:
<div class="header">
<h2>Create Account</h2>
</div>
<form id="form" class="form" action="Iphone.html" method="post">
<div class="form-control">
<label for="username">Username</label>
<input type="text" placeholder="Drake" id="username" />
<i class="fas fa-check-circle"></i>
<i class="fas fa-exclamation-circle"></i>
<small>Error message</small>
</div>
<div class="form-control">
<label for="username">Email</label>
<input type="email" placeholder="applehub@gmail.com" id="email" />
<i class="fas fa-check-circle"></i>
<i class="fas fa-exclamation-circle"></i>
<small>Error message</small>
</div>
<div class="form-control">
<label for="username">Password</label>
<input type="password" placeholder="Password" id="password"/>
<i class="fas fa-check-circle"></i>
<i class="fas fa-exclamation-circle"></i>
<small>Error message</small>
</div>
<div class="form-control">
<label for="username">Password check</label>
<input type="password" placeholder="Password two" id="password2"/>
<i class="fas fa-check-circle"></i>
<i class="fas fa-exclamation-circle"></i>
<small>Error message</small>
</div>
<input type="submit" value="Submit" name="">
<a href="#" id="login"><p>Have an account? Login.</p></a>
</form>
</div>
这是 Javascript,我放置了提交按钮e.preventDefault();
,但当表单有效时我无法关闭它:
const username = document.getElementById('username');
const email = document.getElementById('email');
const password = document.getElementById('password');
const password2 = document.getElementById('password2');
form.addEventListener('submit', e => {
e.preventDefault();
checkInputs();
});
function checkInputs() {
// trim to remove the whitespaces
const usernameValue = username.value.trim();
const emailValue = email.value.trim();
const passwordValue = password.value.trim();
const password2Value = password2.value.trim();
if(usernameValue === '') {
setErrorFor(username, 'Username cannot be blank');
} else {
setSuccessFor(username);
}
if(emailValue === '') {
setErrorFor(email, 'Email cannot be blank');
} else if (!isEmail(emailValue)) {
setErrorFor(email, 'Not a valid email');
} else {
setSuccessFor(email);
}
if(passwordValue === '') {
setErrorFor(password, 'Password cannot be blank');
} else {
setSuccessFor(password);
}
if(password2Value === '') {
setErrorFor(password2, 'Password2 cannot be blank');
} else if(passwordValue !== password2Value) {
setErrorFor(password2, 'Passwords does not match');
} else{
setSuccessFor(password2);
}
}
function setErrorFor(input, message) {
const formControl = input.parentElement;
const small = formControl.querySelector('small');
formControl.className = 'form-control error';
small.innerText = message;
}
function setSuccessFor(input) {
const formControl = input.parentElement;
formControl.className = 'form-control success';
}
function isEmail(email) {
return /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(email);
}```
解决方案
检查验证是否正确后,您需要手动重定向。
要重定向到另一个页面,您可以使用:
window.location = "http://www.yoururl.com";
如果应用程序是SPA
,请使用browserhistory.push('/uri');
推荐阅读
- android - Android Kotlin - 以编程方式更改按钮的背景
- amazon-cloudformation - CircleCI 工作失败,帮助排除故障
- powershell - PowerShell 创建数组循环失败
- r - 在R中的指定日期之后获取剩余用户的百分比
- python - 在 VS Code 中停止调试器时不会执行“Finally”块
- regex - grep REGEX:如何匹配尖括号内的字符串,不包括尖括号
- android - RecyclerView:电影图像不显示
- devops - 我们如何在 Azure DevOps 中禁用测试用例工作项类型
- vba - 出错后循环回输入框
- swift - 从核心数据实体中获取对象检索到错误的对象