Javascript 我在验证或提交表格时遇到问题

Javascript 我在验证或提交表格时遇到问题,javascript,jquery,html,forms,Javascript,Jquery,Html,Forms,我的表单似乎没有进行验证或提交。它以前是提交和验证的,但是Jquery错误消息并没有同时显示,所以我不得不编辑代码,现在它根本没有提交或验证 这是我的JS: function validateUserName(user) { var u = document.forms["NewUser"]["user"].value var uLength = u.length; var illegalChars = /\W/; // allow letters, numbers, a

我的表单似乎没有进行验证或提交。它以前是提交和验证的,但是Jquery错误消息并没有同时显示,所以我不得不编辑代码,现在它根本没有提交或验证

这是我的JS:

function validateUserName(user)
{
    var u = document.forms["NewUser"]["user"].value
    var uLength = u.length;
    var illegalChars = /\W/; // allow letters, numbers, and underscores
    if (u == null || u == "")
    {
        return "You Left the Username field Emptyyy";
    }
    else if (uLength <4 || uLength > 11)
    {
        return "The Username must be between 4 and 11 characters";

    }
    else if (illegalChars.test(u)) 
    {
        return "The Username contains illegal charectors men!";
    }
    else
    {
        return "";
    }
}

function validatePassword(pwd)
{
    var p = document.forms["NewUser"]["pwd"].value
    var cP = document.forms["NewUser"]["confirmPwd"].value
    var pLength = p.length;
    if (p == null || p == "")
    {
        return "You left the password field empty";
    }
    else if (pLength < 6 || pLength > 20)
    {
        return "Your password must be between 6 and 20 characters in length";
    }
    else if (p != cP)
    {
        return "The passwords do not match!"
    }
    else
    {
        return "";
    }
}

function validateEmail(email)
{
    var e = document.forms["NewUser"]["email"].value
    var eLength = e.length;
    var emailFilter = /^[^@]+@[^@.]+\.[^@]*\w\w$/ ;
    var illegalChars= /[\(\)\<\>\,\;\:\\\"\[\]]/ ;

    if (eLength == "" || eLength == null) 
    {

        return "You left the email field blank!";
    } 
    else if (e.match(illegalChars)) 
    {

        return "ILEGAL CHARECTORS DETECTED EXTERMINATE";
    } 
    else 
    {
        return "";
    }
}
function validateFirstName(fname)
{
    var f = document.forms["NewUser"]["fName"].value;
    var fLength = f.length;
    var illegalChars = /\W/;

    if(fLength > 20)
    {
        return "First Name has a max of 20 characters";

    }
    else if (illegalChars.test(f))
    {
        return "Numbers,letter and underscores in first name only";

    }
    else 
    {
        return "";
    }


}

function validateLastName(lName)
{
    var l = document.forms["NewUser"]["lName"].value;
    var lLength = l.length;
    var illegalChars = /\W/;

    if(lLength > 100)
    {
        return  "Last Name has a max of 100 characters";
    }
    else if (illegalChars.test(f))
    {
        $("#ErrorLname").text("Numbers,letter and underscores in last name only";
    }
    else 
    {
        return "";
    }


}

function validateForm()
{
/*

   valid = true;
    //call username function
    valid = valid && validateUserName();

    //call password function
    valid = valid && validatePassword();

    //call email function
    valid = valid && validateEmail();

    //call first name function
    valid = valid && validateFirstName();

    //call first name function
    valid = valid && validateLastName();

    return valid;
*/


    var error = "";
    //call username function
    error += "\n"+validateUserName();

    //call password function
    error += "\n"+validatePassword();

    error += "\n"+validateEmail();

    error += "\n" + validateFirstName();

    error += "\n" + validateLastName();

    if(error === ""){
        return true;
    }
    else{
         $("#ErrorUser").text(error);
         $("#ErrorEmail").text(error);
         $("#ErrorFname").text(error);
         $("#ErrorPassword1").text(error);
         $("#ErrorLname").text(error);
         return false;

    }

}

  $('#your-form').submit(validateForm);
函数validateUserName(用户)
{
var u=document.forms[“NewUser”][“user”].value
var uLength=u.长度;
var illegalChars=/\W//;//允许使用字母、数字和下划线
如果(u==null | | u==“”)
{
返回“您将用户名字段留空YYY”;
}
否则,如果(U长度11)
{
返回“用户名必须在4到11个字符之间”;
}
else if(非法字符测试(u))
{
return“用户名包含非法的charectors men!”;
}
其他的
{
返回“”;
}
}
功能验证密码(pwd)
{
var p=document.forms[“NewUser”][“pwd”].value
var cP=document.forms[“NewUser”][“confirmPwd”].value
var pLength=p.长度;
如果(p==null | | p==“”)
{
返回“您将密码字段留空”;
}
否则,如果(增压<6 | |增压>20)
{
return“您的密码长度必须在6到20个字符之间”;
}
否则如果(p!=cP)
{
return“密码不匹配!”
}
其他的
{
返回“”;
}
}
功能验证电子邮件(电子邮件)
{
var e=document.forms[“NewUser”][“email”].value
变量长度=e.长度;
var emailFilter=/^[^@]+@[^@.]+\.[^@]*\w\w$/;
变量illegalChars=/[\(\)\\,\;\:\\\\“\[\]]/;
如果(元素长度==“”| |元素长度==null)
{
return“您将电子邮件字段留空!”;
} 
否则如果(如匹配(非法字符))
{
返回“检测到的ILEGAL CHARECTORS已清除”;
} 
其他的
{
返回“”;
}
}
函数validateFirstName(fname)
{
var f=document.forms[“NewUser”][“fName”].value;
var fLength=f.长度;
var illegalChars=/\W/;
如果(长度>20)
{
return“名字最多20个字符”;
}
else if(非法字符测试(f))
{
返回“仅限名字中的数字、字母和下划线”;
}
其他的
{
返回“”;
}
}
函数validateLastName(lName)
{
var l=document.forms[“NewUser”][“lName”].value;
var l长度=l长度;
var illegalChars=/\W/;
如果(长度>100)
{
return“姓氏最多100个字符”;
}
else if(非法字符测试(f))
{
$(“#ErrorName”).text(“仅姓氏中的数字、字母和下划线”;
}
其他的
{
返回“”;
}
}
函数validateForm()
{
/*
有效=真;
//调用用户名函数
valid=valid&&validateUserName();
//调用密码函数
valid=valid&&validatePassword();
//呼叫电子邮件功能
valid=valid&&validateEmail();
//调用名字函数
valid=valid&&validateFirstName();
//调用名字函数
valid=valid&&validateLastName();
返回有效;
*/
var误差=”;
//调用用户名函数
错误+=“\n”+validateUserName();
//调用密码函数
错误+=“\n”+验证密码();
错误+=“\n”+验证邮件();
错误+=“\n”+validateFirstName();
错误+=“\n”+validateLastName();
如果(错误==“”){
返回true;
}
否则{
$(“#ErrorUser”).text(错误);
$(“#错误电子邮件”)。文本(错误);
$(“#ErrorFname”).text(错误);
$(“#ErrorPassword1”).text(错误);
$(“#ErrorName”).text(错误);
返回false;
}
}
$(“#您的表格”)。提交(validateForm);

Fiddle:

您的代码中几乎没有错误

  • 永远不会调用validateForm()
  • 第174行:应为
    else if(非法字符测试(l))
  • 第113行:缺少闭合支架
  • 这把小提琴现在好像在用

    确保页面中包含jQuery

    $(function() {
      $('#your-form').submit(function() {
         return  validateForm(); 
     });
    });
    

    通知jQuery在提交表单时验证表单。

    在小提琴中,您忘记了表单标记上的
    method=“POST”

    <form name = "NewUser" id = "your-form" method="POST"> 
    
    
    
    你能创建一个提琴吗?有控制台错误吗?为什么不放控制台消息或警报消息呢..如果你什么也没看到,那么提交表单后就是JS错误解决这就是Javascript调试器的目的。你做了什么调查?好的。我添加了一个fiddle@Barmar什么是javascript调试器?哇,谢谢,它几乎可以工作了现在对我来说。唯一的问题是,所有的错误消息都显示在每个表单字段上,而不是仅显示在适用的消息上。你知道我如何解决这个问题吗?当一切都正确时,表单不会提交?要使其正常工作,你必须独立检查每个字段的相应错误。然后检查所有字段是否没有发生错误如果出现错误,则获取相应验证函数的消息,并将其应用于每个字段旁边的错误元素。我已更新了fiddle,但在我看来,这是一种快速而肮脏的验证方法,它工作正常,但您可能需要更有效地重新实现它。您帮了大忙,谢谢:)