我想在javascript中显示多个错误

我想在javascript中显示多个错误,javascript,Javascript,在我的项目中,我必须在提交表单时验证所有字段,并在表单字段上方的顺序列表中的同一页上显示错误消息。下面是我的代码,但单击“输入数据”时,一次只显示一个错误。我尝试了多个解决方案,但无法正常工作,所以如何同时显示多个错误 函数验证(){ var-minnumberofchars=6; var maxnumberofchars=16; 变量RegularExpersion=/^(?=.[0-9])(?=.[!@$%^&*])[a-zA-Z0-9!@$%^&*]{6,16}$/; 变量字母=/^[A

在我的项目中,我必须在提交表单时验证所有字段,并在表单字段上方的顺序列表中的同一页上显示错误消息。下面是我的代码,但单击“输入数据”时,一次只显示一个错误。我尝试了多个解决方案,但无法正常工作,所以如何同时显示多个错误

函数验证(){
var-minnumberofchars=6;
var maxnumberofchars=16;
变量RegularExpersion=/^(?=.[0-9])(?=.[!@$%^&*])[a-zA-Z0-9!@$%^&*]{6,16}$/;
变量字母=/^[A-Za-z]+$/;
var emailRegex=/^[A-Za-z0-9.\]*\@[A-Za-z]*\.[A-Za-z]{2,5}$/;
var frname=document.getElementById('fname').value;
var lrname=document.getElementById('lname').value;
var fage=document.getElementById('age')。值;
var femail=document.getElementById('email')。值;
var fpassword=document.getElementById('password')。值;
如果(frname==“”){
document.getElementById('error').innerHTML=“输入名字”;
返回false;
}
如果(!字母测试(frname)){
document.getElementById('error').innerHTML=“仅输入文本”;
返回false;
}
如果(lrname==“”){
document.getElementById('error').innerHTML=“输入姓氏”;
返回false;
}
如果(!字母.测试(lrname)){
document.getElementById('error').innerHTML=“仅输入文本”;
返回false;
}
如果(fage==“”){
document.getElementById('error').innerHTML=“输入年龄”;
返回false;
}
if(伊斯南(法格)){
document.getElementById('error').innerHTML=“输入唯一的数字”;
返回false;
}
如果(femail==“”){
document.getElementById('error').innerHTML=“输入电子邮件”;
返回false;
}
如果(!emailRegex.test(femail)){
document.getElementById('error').innerHTML=“输入有效电子邮件”;
返回false;
}
如果(fpassword==“”){
document.getElementById('error').innerHTML=“输入密码”;
返回false;
}
if(fpassword.lengthmaxnumberofchars){
document.getElementById('error').innerHTML=“密码应介于6到16个字符之间”;
返回false;
}
if(!常规扩展测试(fpassword)){
document.getElementById('error').innerHTML=“密码应至少包含一个数字和一个特殊字符”;
返回false;
}
返回true;
}

名字
姓
年龄
电子邮件
密码

这里有两个问题

  • 验证后返回false,因此执行不会继续
isValid=false替换
returnfalse
(在方法开头将此变量初始化为
true
)。在方法末尾返回此变量

  • 您需要使用增量赋值
    +=
    运算符,而不是赋值
    =
    运算符
比如说,

document.getElementById('error').innerHTML += "enter the first name" + "<br>";
document.getElementById('error')。innerHTML++=“输入名字”+”
”;

或者最好使用变量而不是
document.getElementById('error')。innerHTML
您可以将该变量的值分配给Validate函数中
error
innerHTML
,取一个变量,而不是返回false,只需将错误消息附加到html div或维护标志以检查是否存在错误,如果函数中存在任何错误,则在函数末尾返回false,并在div中显示验证

函数验证(){
var-minnumberofchars=6;
var maxnumberofchars=16;
变量RegularExpersion=/^(?=.[0-9])(?=.[!@$%^&*])[a-zA-Z0-9!@$%^&*]{6,16}$/;
变量字母=/^[A-Za-z]+$/;
var emailRegex=/^[A-Za-z0-9.\]*\@[A-Za-z]*\.[A-Za-z]{2,5}$/;
var frname=document.getElementById('fname').value;
var lrname=document.getElementById('lname').value;
var fage=document.getElementById('age')。值;
var femail=document.getElementById('email')。值;
var fpassword=document.getElementById('password')。值;
var errorMessages='';
如果(frname==“”){
errorMessages+=“
输入名字”; } 如果(!字母测试(frname)){ errorMessages+=“
仅输入文本”; } 如果(lrname==“”){ errorMessages+=“
输入姓氏”; } 如果(!字母.测试(lrname)){ errorMessages+=“
仅输入文本”; } 如果(fage==“”){ errorMessages+=“
输入年龄”; } if(伊斯南(法格)){ errorMessages+=“
输入唯一的数字”; } 如果(femail==“”){ errorMessages+=“
输入电子邮件”; } 如果(!emailRegex.test(femail)){ errorMessages+=“
输入有效的电子邮件”; } 如果(fpassword==“”){ errorMessages+=“
输入密码”; } if(fpassword.lengthmaxnumberofchars){ errorMessages+=“
密码应介于6到16个字符之间”; } if(!常规扩展测试(fpassword)){ errorMessages+=“
密码应至少包含一个数字和一个特殊字符”; } 如果(错误消息!=''){ //在这里,您还可以使用标志来检查是否存在错误 document.getElementById('error')。innerHTML=errorMessages; 返回false; } 返回true; }
您也可以执行
errorMessages=[]errorMessages.push(“错误1”)和结尾处的
document.getElementById('error').innerHTML=errorMessages.join('
')存在一些问题一些错误不会立即显示。如果您执行以下建议之一,您还需要在测试中输入其他内容,以确保为空和其他内容不具有
输入密码,输入有效密码
最后不要在for
name=“submit”
中调用任何内容-它将隐藏提交事件处理程序。移动
return validate()