2011-01-10 6 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

+1

ロジックサーバー側が重複していないことを確認してください。クライアント側の検証(jQuery)は、ユーザーの利便性とパフォーマンスの最適化のみです。 _real_検証作業は常にサーバー側でなければなりません。 –

答えて

2

jValidateを見てみると、タスクを簡素化してスピードアップすることができます。私はそれを新しいフォームを作成するために日常的に使用します。

ただし、I 強くもサーバー側で検証することをお勧めします。ユーザーが行うべきことは、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を使用できます。 elseを取り除くとif()return falseを移動得るために

$("#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が良いです。ハンドラで非同期コードを実行している場合は、submitsubmitから呼び出す方が重要です。

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> 

、私はあなたにも、サーバー側の検証が必要になります感情を繰り返す必要があります。

関連する問題