0

フォームが検証または送信されていないようです。以前は送信と検証を行っていましたが、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);

フィドル: http://jsfiddle.net/cyKgD/

4

2 に答える 2

1

コードにいくつかのエラーがありました。

  1. validateForm() が呼び出されることはありません
  2. 174行目:あるべきelse if (illegalChars.test(l))
  3. 行 113: 閉じ括弧がありません

このフィドルは現在動作しているようです、http://jsfiddle.net/u5565/

jQuery がページに含まれていることを確認してください。コード行

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

送信時にフォームを検証するよう jQuery に指示します。

于 2013-05-18T14:54:15.893 に答える
0

あなたのフィドルでmethod="POST"、フォームタグを忘れました

<form name = "NewUser" id = "your-form" method="POST"> 
于 2013-05-18T15:18:05.377 に答える