为什么我的表单检验没有被触发,直接就跳转到成功页面了,菜鸟真诚提问!!!

注册表单


register.html
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="this is my page">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">

<link rel="stylesheet" href="css/main.css" type="text/css" />
<script type="text/javascript" src="js/form.js"></script>










新会员注册







































会员邮箱


请输入有效的邮箱地址
会员名:


字母数字下划线1到10位,不能是数字开头
密码:


密码请设置6-16位字符
重复密码:

 
性别:   

       

 
联系电话:

 
个人介绍:

 













检验表单form.js
var emailObj;
var usernameObj;
var passwordObj;
var confirmObj;
var emailMsg;
var usernameMsg;
var passworgMsg;
var confirmMsg;
window.onload=function(){
       emailObj=document.getElementById("email");
       usernameObj=document.getElementById("username");
       passwordObj=document.getElementById("password");
       passwordObj=document.getElementById("repassword");
       emailMsg=document.getElementById("emailMsg");
       usernameMsg=document.getElementById("usernameMsg");
       passworgMsg=document.getElementById("passworgMsg");
       confirmMsg=document.getElementById("confirmMsg");
};
function checkForm(){
   var bEmail=checkEmail();
   var bUsername=checkUsername();
   var bPassword=checkPassword();
   var bConfirm=checkConfirm();
   return bUsername && bPassword && bConfirm && bEmail;
}
function checkEmail(){
    var regex= /^[\w-] + @ ([\w-]+\.) + [a-zA-Z] {2,4}$/;
    var value=emailObj.value;
    var msg = "";
    if(!value)
        msg = "邮箱必须填写:";
    else if(!regex.test(value))
        msg="邮箱格式不合法";
    emailMsg.innerHTML = msg;

emailObj.parentNode.parentNode.style.color = msg == "" ? "black" : "red";
return msg == "";
}
function checkUsername(){
var regex= /^[a-zA-Z_]\w{0,9}$/;
var value=usernameObj.value;
var msg="";
if(!value)
msg = "用户名必须填写:";
else if(!regex.test(value))
msg="用户名不合法";
usernameMsg.innerHTML = msg;
usernameObj.parentNode.parentNode.style.color = msg == "" ? "black" : "red";
return msg == "";
}
function checkPassword(){
var regex= /^.{6,16}$/;
var value=passwordObj.value;
var msg="";
if(!value)
msg = "密码必须填写:";
else if(!regex.test(value))
msg="密码不合法";
passwordMsg.innerHTML = msg;
passwordObj.parentNode.parentNode.style.color = msg == "" ? "black" : "red";
return msg == "";
}
function checkConfirm(){
var passwordValue=passwordObj.value;
var confirmValue=confirmObj.value;
var msg= "";
if(!confirmValue)
msg = "确认密码必须填写:";
else if((passwordValue!=confirmValue))
msg="密码必须保存一致";
confirmMsg.innerHTML = msg;
confirmObj.parentNode.parentNode.style.color = msg == "" ? "black" : "red";
return msg == "";
}

3个回答

说一句,太乱了,也懒得看了,这个问题一般出现在表头,你看看是否进行了判断 或者就是css里面的错误

正如楼上说的,太乱了。我简单的看了一遍,checkForm这个函数里,你还要调用单独的子函数去验证,不麻烦吗?编程讲究分合,有的适合分,有的适合合。你这就集成到一个函数里就OK了。

另外最关键的,没看到你哪个函数里用到return false,最可能的原因就是这里,没有这个你函数一步步全都走一遍,最后肯定是提交了表单,跟没验证一样。

重新整理,或许你能发现问题的所在。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问