can';在javascript中验证后,不要提交表单
帮助,我正在验证我的表单。它可以验证所有字段,但验证后不能提交。我试图在中运行代码,但在验证表单后,它无法进入test.html页面。我是javascript新手,所以我不知道问题出在哪里。任何帮助都将不胜感激。谢谢 代码如下: //HTML表单can';在javascript中验证后,不要提交表单,javascript,html,Javascript,Html,帮助,我正在验证我的表单。它可以验证所有字段,但验证后不能提交。我试图在中运行代码,但在验证表单后,它无法进入test.html页面。我是javascript新手,所以我不知道问题出在哪里。任何帮助都将不胜感激。谢谢 代码如下: //HTML表单 <form name="form" id="form" onsubmit="return (validateForm(this));" action="test.htm" method="post"> 名字 用户名 密码 确认
<form name="form" id="form" onsubmit="return (validateForm(this));" action="test.htm" method="post">
名字
用户名
密码
确认密码
电子邮件地址
//Javascript代码
var borderErr = "1px solid rgb(100,0,50)";
var borderOk = "1px solid rgb(0,150,50)";
var warn = "<b class='warn'>!</b>";
// for First Name validation
var matchfName = /^[a-zA-Z]$/;
var errorfNameEmpty = "<b class='err'>First name is required";
// for Username validation
var matchUsername = /^[A-Za-z][A-Za-z0-9]*(?:_[A-Za-z0-9]+)*$/;
var matchUsername2 = /^[a-z0-9_-]{5,15}$/;
var errorUsernameEmpty = "<b class='err'>Username is required\n</b>";
var errorUsernameInvalid = "<b class='err'>The username is not valid. Must contains 5 to 15 alpha numeric characters\n</b>";
// for Password validation
var matchPass = /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[^a-zA-Z0-9])(?!.*\s).{7,15}$/;
var errPassEmpty = "<b class='err'>Password is required</b>";
var errPassInvalid = "<b class='err'>Password must contains with a combination of <br/>7 to 15 alpha numeric and special characters.";
// for Confirm Password validation
var errPassEmpty2 = "<b class='err'>Confirm password is required</b>";
var errPassInvalid2 = "<b class='err'>Confirm password must the same as password value.";
// for Email validation
var matchEmail = /^(([^<>()[\]\\.,;:\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,}))$/;
var errEmailEmpty = "<b class='err'>Email address is required</b>";
var errEmailInvalid = "<b class='err'>Invalid email address. Please enter a valid email.";
function validateForm(regForm) {
var warning = "";
warning += validatefName(regForm.firstname);
warning += validateUsername(regForm.username);
warning += validatePassword(regForm.password);
warning += validatePassword2(regForm.password2);
warning += validateEmail(regForm.email);
if (warning != "") {
return false;
}
return true;
}
// validate first name
function validatefName(fld) {
if(fld.value == "") {
fld.style.border=borderErr;
document.getElementById("errfName").innerHTML=errorfNameEmpty;
document.getElementById("warnfName").innerHTML=warn;
return false;
}
else {
fld.style.border=borderOk;
document.getElementById("errfName").innerHTML="First Name";
document.getElementById("warnfName").innerHTML="";
return true;
}
}
//validate username
function validateUsername(fld) {
if (fld.value == "") {
fld.style.border=borderErr;
document.getElementById("errUser").innerHTML=errorUsernameEmpty;
document.getElementById("warnUser").innerHTML=warn;
return false;
}
else if ((!matchUsername.test(fld.value)) || (!matchUsername2.test(fld.value))) {
fld.style.border=borderErr;
document.getElementById("errUser").innerHTML=errorUsernameInvalid;
document.getElementById("warnUser").innerHTML=warn;
return false;
}
else {
document.getElementById("errUser").innerHTML="Username";
document.getElementById("warnUser").innerHTML="";
fld.style.border=borderOk;
return true;
}
}
// validate password
function validatePassword(fld) {
if (fld.value == "") {
fld.style.border=borderErr;
document.getElementById("errPass").innerHTML=errPassEmpty;
document.getElementById("warnPass").innerHTML=warn;
return false;
}
else if (!matchPass.test(fld.value)) {
document.getElementById("errPass").innerHTML=errPassInvalid;
document.getElementById("warnPass").innerHTML=warn;
fld.style.border=borderErr;
return false;
}
else {
fld.style.border=borderOk;
document.getElementById("errPass").innerHTML="Password";
document.getElementById("warnPass").innerHTML="";
return true;
}
}
// validate confirm password
function validatePassword2(fld) {
var passVal = document.getElementById("password").value;
if (fld.value == "") {
fld.style.border=borderErr;
document.getElementById("errPass2").innerHTML=errPassEmpty2;
document.getElementById("warnPass2").innerHTML=warn;
return false;
}
else if (passVal != fld.value) {
document.getElementById("errPass2").innerHTML=errPassInvalid2;
document.getElementById("warnPass2").innerHTML=warn;
fld.style.border=borderErr;
return false;
}
else {
fld.style.border=borderOk;
document.getElementById("errPass2").innerHTML="Confirm Password";
document.getElementById("warnPass2").innerHTML="";
return true;
}
}
// validate email address
function validateEmail(fld) {
if (fld.value == "") {
fld.style.border=borderErr;
document.getElementById("errEmail").innerHTML=errEmailEmpty;
document.getElementById("warnEmail").innerHTML=warn;
return false;
}
else if (!matchEmail.test(fld.value)) {
fld.style.border=borderErr;
document.getElementById("errEmail").innerHTML=errEmailInvalid;
document.getElementById("warnEmail").innerHTML=warn;
return false;
}
else {
fld.style.border=borderOk;
document.getElementById("errEmail").innerHTML="Email Address";
document.getElementById("warnEmail").innerHTML="";
return true;
}
}
var borderErr=“1px实心rgb(100,0,50)”;
var borderOk=“1px实心rgb(0150,50)”;
var warn=“!”;
//用于名字验证
var matchfName=/^[a-zA-Z]$/;
var errorfnamempty=“需要名字”;
//用于用户名验证
var matchUsername=/^[A-Za-z][A-Za-z0-9]*(?:[A-Za-z0-9]+)*$;
var matchUsername2=/^[a-z0-9_-]{5,15}$/;
var errorUsernameEmpty=“需要用户名\n”;
var errorUsernameInvalid=“用户名无效。必须包含5到15个字母数字字符\n”;
//用于密码验证
变量matchPass=/^(?=.*\d)(?=.[a-z])(?=.[a-z])(?=.[^a-zA-Z0-9])(?!.\s)。{7,15}$/;
var errPassEmpty=“需要密码”;
var errPassInvalid=“密码必须包含7到15个字母数字和特殊字符的组合。”;
//用于确认密码验证
var errPassEmpty2=“需要确认密码”;
var errPassInvalid2=“确认密码必须与密码值相同。”;
//用于电子邮件验证
var matchEmail=/^([^()[\]\\,;:\s@\“]+(\.[^()[\]\\,;:\s@\“]+*)(\“+\”)@((\[[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.])){124;([a-zA Z-0-9]+-zA 0-9]+-Z]/-[a-2}.];
var errEmailEmpty=“需要电子邮件地址”;
var errEmailInvalid=“无效的电子邮件地址。请输入有效的电子邮件。”;
函数validateForm(regForm){
var警告=”;
警告+=validatefName(regForm.firstname);
警告+=validateUsername(regForm.username);
警告+=validatePassword(regForm.password);
警告+=validatePassword2(regForm.password2);
警告+=validateEmail(regForm.email);
如果(警告!=“”){
返回false;
}
返回true;
}
//验证名字
函数validatefName(fld){
如果(fld.value==“”){
fld.style.border=borderErr;
document.getElementById(“errfName”).innerHTML=errorfNameEmpty;
document.getElementById(“warnfName”).innerHTML=warn;
返回false;
}
否则{
fld.style.border=borderOk;
document.getElementById(“errfName”).innerHTML=“First Name”;
document.getElementById(“warnfName”).innerHTML=“”;
返回true;
}
}
//验证用户名
函数validateUsername(fld){
如果(fld.value==“”){
fld.style.border=borderErr;
document.getElementById(“errUser”).innerHTML=errorUsernameEmpty;
document.getElementById(“warnUser”).innerHTML=warn;
返回false;
}
如果(!matchUsername.test(fld.value))| |(!matchUsername.test(fld.value)),则为else{
fld.style.border=borderErr;
document.getElementById(“errUser”).innerHTML=errorUserName无效;
document.getElementById(“warnUser”).innerHTML=warn;
返回false;
}
否则{
document.getElementById(“errUser”).innerHTML=“Username”;
document.getElementById(“warnUser”).innerHTML=“”;
fld.style.border=borderOk;
返回true;
}
}
//验证密码
功能验证密码(fld){
如果(fld.value==“”){
fld.style.border=borderErr;
document.getElementById(“errPass”).innerHTML=errPassEmpty;
document.getElementById(“warnPass”).innerHTML=warn;
返回false;
}
否则,如果(!匹配通过测试(fld值)){
document.getElementById(“errPass”).innerHTML=errPassInvalid;
document.getElementById(“warnPass”).innerHTML=warn;
fld.style.border=borderErr;
返回false;
}
否则{
fld.style.border=borderOk;
document.getElementById(“errPass”).innerHTML=“Password”;
document.getElementById(“warnPass”).innerHTML=“”;
返回true;
}
}
//验证确认密码
函数validatePassword2(fld){
var passVal=document.getElementById(“密码”).value;
如果(fld.value==“”){
fld.style.border=borderErr;
document.getElementById(“errPass2”).innerHTML=errPassEmpty2;
document.getElementById(“warnPass2”).innerHTML=warn;
返回false;
}
else if(passVal!=fld.value){
document.getElementById(“errPass2”).innerHTML=errPassInvalid2;
document.getElementById(“warnPass2”).innerHTML=warn;
fld.style.border=borderErr;
返回false;
}
否则{
fld.style.border=borderOk;
document.getElementById(“errPass2”).innerHTML=“确认密码”;
document.getElementById(“warnPass2”).innerHTML=“”;
返回true;
}
}
//验证电子邮件地址
功能验证邮件(fld){
如果(fld.value==“”){
fld.style.border=borderErr;
document.getElementById(“errEmail”).innerHTML=errEmailEmpty;
document.getElementById(“warnEmail”).innerHTML=warn;
返回false;
}
如果(!matchEmail.test(fld.value)){
fld.style.border=borderErr;
document.getElementById(“errEmail”).innerHTML=errEmailInvalid;
document.getElementById(“warnEmail”).innerHTML=warn;
返回false;
}
否则{
fld.style.border=borderOk;
document.getElementById(“errEmail”).innerHTML=“电子邮件地址”;
document.getElementById(“warnEmail”).innerHTML=“”;
返回true;
}
}
尝试更改此行
var warning = "";
warning += validatefName(regForm.firstname);
warning += validateUsername(regForm.username);
warning += validatePassword(regForm.password);
warning += validatePassword2(regForm.password2);
warning += validateEmail(regForm.email);
if (warning != "") {
if(validatefName(regForm.firstname) == true && validateUsername(regForm.username) == true && validatePassword(regForm.password) == true && validatePassword2(regForm.password2) == true && validateEmail(regForm.email) == true) {
这条线
var warning = "";
warning += validatefName(regForm.firstname);
warning += validateUsername(regForm.username);
warning += validatePassword(regForm.password);
warning += validatePassword2(regForm.password2);
warning += validateEmail(regForm.email);
if (warning != "") {
if(validatefName(regForm.firstname) == true && validateUsername(regForm.username) == true && validatePassword(regForm.password) == true && validatePassword2(regForm.password2) == true && validateEmail(regForm.email) == true) {
现在看看它是否正确根据你的小提琴,我在你的代码中发现了一些错误
if (title=="" || title==null) { } else {
alert("Please enter only alphanumeric values for your advertisement title");
}
应该是
if (title.length != 0) { } else {
alert("Please enter only alphanumeric values for your advertisement title");
return false;
}
第二种方法是检查字段是否没有值的更有效的方法
我还在您的else条件中添加了return false,最后一次返回应该为true。
这是您的validateForm函数。我更新了你的
由于内部验证方法返回true或false,因此需要将父验证方法修改为this或simi
function validateForm(regForm) {
var formValid = true;
formValid &= validatefName(regForm.firstname);
formValid &= validateUsername(regForm.username);
formValid &= validatePassword(regForm.password);
formValid &= validatePassword2(regForm.password2);
formValid &= validateEmail(regForm.email);
if (!formValid) {
return false;
}
return true;
}
function validateForm()
{
var flag = 1;
// Validate URL
var url = $("#frurl").val();
if (validateURL(url)) { } else {
alert("Please enter a valid URL, remember including http://");
flag++;
}
// Validate Title
var title = $("#frtitle").val();
if (title=="" || title==null) { } else {
alert("Please enter only alphanumeric values for your advertisement title");
flag++;
}
// Validate Email
var email = $("#fremail").val();
if ((/(.+)@(.+){2,}\.(.+){2,}/.test(email)) || email=="" || email==null) { } else {
alert("Please enter a valid email");
flag++;
}
if (flag == 1)
return true;
else
return false;
}