javascript - Javascript表单验证只工作一次
问题描述
脚本:NewsletterScript.js
function formValidation() {
var fname = document.getElementById('firstName').value;
var lname = document.getElementById('lastName').value;
var pnumber = document.getElementById('phoneNumber').value;
var email = document.getElementById('e-mail').value;
if (FirstName(fname)) {
}
if (LastName(lname)) {
}
if (Country(country)) {
}
if (Email(email)) {
}
return false;
}
/*first name input validation*/
function FirstName(fname) {
var message = document.getElementsByClassName("error-message");
var letters = /^[A-Za-z]+$/;
if ( fname =="" || fname.match(letters)) {
text="";
message[0].innerHTML = text;
return true;
}
else {
text="First name should contain only letters";
message[0].innerHTML = text;
return false;
}
}
/*last name input validation*/
function LastName(lname) {
var message = document.getElementsByClassName("error-message");
var letters = /^[A-Za-z]+$/;
if ( lname =="" || lname.match(letters)) {
text="";
message[1].innerHTML = text;
return true;
}
else {
text="Last name should contain only letters";
message[1].innerHTML = text;
return false;
}
}
我试图让这个验证循环,直到满足条件,目前这只工作一次,如果再次点击按钮,它无论如何都会提交。下面的按钮。
由于脚本很长,它不允许我上传所有内容,但它只是得到了其他验证,例如电话号码等,任何帮助将不胜感激,干杯!
解决方案
如果您想要的是仅在四个验证函数formValidation()
返回true
true 时才返回,那么您应该编写它而不是放置空的 if 语句:
return FirstName(fname) && LastName(lname) && Country(country) && Email(email);
如果其中一个返回 false,这种方式formValidation()
将返回 false
推荐阅读
- mysql - Laravel InsertOrIgnore - 插入了哪些记录?
- python - discord.py 等待 channel.connect 超时
- ionic-framework - 离子原生闪屏 vs 电容闪屏?
- python - 如何显示通过 aiortc 接收的流而不写入文件
- python - 如何在带有美丽汤的类中找到标签
- php - Laravel刀片将变量传递给php函数
- django - 使用搜索动态检索 Django M2M 关系
- python-3.x - 抓取 URL 时出现 JSONDecodeError
- ruby-on-rails - Heroku push 被拒绝错误:无法通过 Bundler 安装 gems(可能由 mimemagic 引起)
- r - R 3.6.3 不会在与 R 4.0.4 共存的环境中启动