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 回答