0

私のコード Jquery コードは、ユーザーがフォームを間違えたときにテーブルにテキストを追加します。ただし、テキストはチェックが終了すると消えてしまうため、ほんの一瞬だけ表示されます。

ユーザー名バリデータは次のとおりです。

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

2 に答える 2

0

フォームの送信を防止するには、デフォルトのアクションを防止する必要があります。この方法を与える:

function validateUserName(e)
{
    e.preventDefault();
    var u = document.forms["NewUser"]["user"].value;
    var uLength = u.length;
    var illegalChars = /\W/; // allow letters, numbers, and underscores
    if (u == null || u == "")
    {
        $("#ErrorUser").text("You Left the Username field Emptyyy");
        return false;
    }
    else if (uLength <4 || uLength > 11)
    {
        $("#ErrorUser").text("The Username must be between 4 and 11 characters");
        return false;
    }
    else if (illegalChars.test(u)) 
    {
        $("#ErrorUser").text("The Username contains illegal charectors men!");
        return false;
    }
    else
    {
        return true;
    }
}

そして、この方法でイベントを呼び出す必要があります:

$("form").onsubmit(validateUserName);

更新:コメントに基づいています。

<form>タグのマークアップを次のように変更します。

<form name="NewUser" id="myform">

JavaScript では、次のように使用します。

$("form").onsubmit(function(e){
    e.preventDefault();
    var u = document.forms["NewUser"]["user"].value;
    var uLength = u.length;
    var illegalChars = /\W/; // allow letters, numbers, and underscores
    if (u == null || u == "")
    {
        $("#ErrorUser").text("You Left the Username field Emptyyy");
        return false;
    }
    else if (uLength <4 || uLength > 11)
    {
        $("#ErrorUser").text("The Username must be between 4 and 11 characters");
        return false;
    }
    else if (illegalChars.test(u)) 
    {
        $("#ErrorUser").text("The Username contains illegal charectors men!");
        return false;
    }
    else
    {
        return true;
    }
});
于 2013-05-09T11:25:41.847 に答える
-1

@adeneo のコメントで既に述べたように、フォームが送信されないようにする必要があります。

<input type="submit" value="Submit" onclick="if(!validateUserName()) return false;"/>

これにより、フォームにエラーがある場合にフォームがデータを送信できなくなります。それらを利用するだけで、すでに Javascript 関数からtrue/を返しています。false

于 2013-05-09T11:28:06.770 に答える