在进行js简单表单验证时,最开始是只能验证不能提交,部分代码如下:
const form = document.getElementById('form');
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, '用户名不能为空');
} else {
setSuccessFor(username);
}
if(emailValue === '') {
setErrorFor(email, '邮箱不能为空');
} else if (!isEmail(emailValue)) {
setErrorFor(email, '邮箱格式不正常');
} else {
setSuccessFor(email);
}
if(passwordValue === '') {
setErrorFor(password, '密码不能为空');
} else {
setSuccessFor(password);
}
if(password2Value === '') {
setErrorFor(password2, '密码不能为空');
} else if(passwordValue !== password2Value) {
setErrorFor(password2, '两次密码不正确');
} 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);
}
然后我改了一下,用if多重判断,复合条件后提交的方式,发现,不验证了,会直接提交,没有任何反馈,以下是js代码:
const form = document.getElementById('form');
const username = document.getElementById('username');
const email = document.getElementById('email');
const password = document.getElementById('password');
const password2 = document.getElementById('password2');
function click1(){
const usernameValue = username.value.trim();
const emailValue = email.value.trim();
const passwordValue = password.value.trim();
const password2Value = password2.value.trim();
if(usernameValue === '') {
if(usernameValue === ''){
setErrorFor(username, '用户名不能为空');
} else {
setSuccessFor(username);
}
} else if(emailValue === '')
{
if(emailValue === '') {
setErrorFor(email, '邮箱不能为空');
} else if (!isEmail(emailValue)) {
setErrorFor(email, '邮箱格式不正常');
} else {
setSuccessFor(email);
}
} else if(passwordValue === '') {
if(passwordValue === '') {
setErrorFor(password, '密码不能为空');
} else {
setSuccessFor(password);
}
} else if(password2Value === '') {
if(password2Value === '') {
setErrorFor(password2, '密码不能为空');
} else if(passwordValue !== password2Value) {
setErrorFor(password2, '两次密码不正确');
} else{
setSuccessFor(password2);
}
}else {
document.form.submit();
}
}
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);
}
我该怎么改才能够在验证表单的前提下再提交到数据库!
有没有能够解答的
form 有表单验证,你看看下下面的例子, 逻辑有问题,表单验证也不是这种写法
https://www.runoob.com/try/try.php?filename=tryjs_form_validation