我可以改进我的验证吗?

时间:2011-01-10 15:57:16

标签: javascript jquery html validation

所以我想使用jQuery来验证我的表单,这是我想象它并且它的工作方式,但这是最好的方法,也许我可以用更少的代码更有效地做到这一点?

<script type="text/javascript">
    $(document).ready(function()
    {
        $("#frmCatAdd").submit(function()
        {
            var name = $("#edtName").val();

            if (name == "")
                $("#edtName").css("border", "1px solid red")
            else
                $("#frmCatAdd").submit();

            return false;
        });
    });
</script>

6 个答案:

答案 0 :(得分:2)

尝试查看jValidate以简化和加快您的任务。我经常使用它来创建新表单。

但是,我强烈建议您在服务器端进行验证。用户所要做的就是关闭Javascript以破坏完美的验证规则。

答案 1 :(得分:1)

是的 - 不仅仅依赖于javascript验证。您还需要进行服务器端验证!这非常重要。如果我关闭了javascript,我已经绕过了你的整个验证。

答案 2 :(得分:1)

建议:

$(document).ready(function() {
    $("#frmCatAdd").submit(function() {
        var $edtname = $("#edtName"),
            name     = $edtname.val();

        if (!$.trim(name).length) {
            $edtName.css("border", "1px solid red")
            return false;
        }
    });
});

答案 3 :(得分:1)

你可以改进的一件事就是摆脱无限循环。通过从.submit()调用.submit(),您已经进行了循环。

在这种情况下,您可以使用原生submit

$("#frmCatAdd").submit(function() {
    var name = $("#edtName").val();

    if (name == "")
        $("#edtName").css("border", "1px solid red")
    else
        this.submit(); // call native submit method instead

    return false;
});

Though @jAndy's suggestion摆脱else并将return false移至if()更好。如果您在处理程序中运行异步代码,则从submit调用submit会更为重要。

答案 4 :(得分:0)

$("#frmCatAdd").submit(function() {
    $e = $(this).find("#edtName");
    if (!$.trim($e.val()).length) {
        $e.css("border", "1px solid red")
        return false;
    }
});

答案 5 :(得分:0)

显而易见的答案:

<form id=frmCatAdd>
<input id=edtName required type=text>
</form>

当然,我应该重复一下你需要服务器端验证的观点。