2011-01-10 151 views
1

所以我想驗證我的表單使用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

回答

2

嘗試查看jValidate以簡化和加快您的任務。我經常用它來創造新的形式。

但是,我強烈建議您驗證在服務器端以及。所有用戶必須做的就是關閉Javascript來打敗你完美的驗證規則。

1

是的 - 不僅僅依賴於javascript驗證。你也需要做服務器端驗證!這非常重要。如果我關閉javascript,則繞過了整個驗證。

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; 
     } 
    }); 
}); 
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 falseif()更好。如果您在處理程序中運行異步代碼,那麼從submit調用submit更重要。

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

顯而易見的答案:

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

當然,我要再說一遍,你將需要服務器端驗證,以及情緒。

相關問題