我可以改进我的验证吗?

问题描述:

所以我想验证我的表单使用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> 
+0

http://bassistance.de/jquery-plugins/jquery-plugin-validation/ – bzlm 2011-01-10 15:58:24

尝试查看jValidate以简化和加快您的任务。我经常用它来创造新的形式。

但是,我强烈建议您验证在服务器端以及。所有用户必须做的就是关闭Javascript来打败你完美的验证规则。

是的 - 不仅仅依赖于javascript验证。你也需要做服务器端验证!这非常重要。如果我关闭javascript,则绕过了整个验证。

建议:

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

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

有一件事你可以改善将是摆脱无限循环的。通过从.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 falseif()更好。如果您在处理程序中运行异步代码,那么从submit调用submit更重要。

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

显而易见的答案:

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

当然,我要再说一遍,你将需要服务器端验证,以及情绪。