2011-01-30 16 views
4

私はカスタムadd.methodを使用していくつかのフォームフィールドを検証するためにjQuery検証プラグインを使用しようとしています。 私のHTMLフォームです。jQuery Validation Plugin addMethod

<form method="post" action="<?=$PHP_SELF?>" name="sf" id="sf"> 

<p> 
<label for="name">Name:</label> 
    <input type="text" name="name" id="name" /><br /> 
</p> 

<p> 
<label for="email">Email:</label> 
    <input type="text" name="email" id="email" /><br /> 
</p> 

</form> 

基本的に、名前フィールドが空でないかどうかを確認するための非常に基本的なルールを試しています。 私は次のことを試しています、それが正しければ教えてください?

<script type="text/javascript"> 
$(document).ready(function() { 
$.validator.addMethod("name",function(value,element){ 
    return this.optional(element) || (i.test(value) > 0); 
    },"Name is required");   
     $("#sf").validate({ 
       rules: { 
       name: true, 
       }, 
     }); 
    }); 
</script> 

フォームの名前フィールドの前に名前のエラーメッセージを表示したいとします。私はそれをどのようにすることができますか?助けてくれてありがとう。

答えて

6

あなただけの必要なフォーム要素を作成したい場合は、あなたが要素にクラスrequiredを追加する必要があります

<input type="text" name="name" id="name" class="required" /> 

この検証によって自動的に取得されます。

これを行うだけでカスタムルールを追加する方法を知りたい場合は、「名前」というルールを使用することをおすすめします(簡単な例では問題がありました)。 rulesオブジェクトの内部あなたは、その要素のためのルールを定義する別のオブジェクト(name)を指定する必要があること

$.validator.addMethod("customname", function(value, element) { 
    var i = /^[A-Za-z]+$/; 
    return this.optional(element) || (i.test(value) > 0); 
}, "Name is required"); 

$("#sf").validate({ 
    rules: { 
     name: { 
      customname: true 
     } 
    } 
}); 

注:ここでは、「名前」を確実にカスタムルールを追加することができる方法だ文字のみです。特定の場所でのエラーを配置するよう

errorPlacementオプションチェックアウト:

errorPlacement: function(error, element) { 
    element.closest("p").prepend(error); 
} 

はラベルとinputとの間の誤差を置くだろうし。

は、ここでのアクションで2の例です:http://jsfiddle.net/andrewwhitaker/7xD2H/

+0

私はあなたがOPのコードを使用し知っているが、記録のために、テストは()ブール値ではなく、数を返します。 – PhiLho

0

これは、あなたがやろうとしているものを達成するでしょう:

$(document).ready(function() { 
    $('#sf').validate(); 
    $("#name").rules("add", { 
     required: true, 
     minlength: 0, 
     messages: { 
      required: "Name is required"    
     } 
    }); 
}); 
関連する問題