27

jQuery Validation プラグインを使用してフォームを検証する場合、文字列が正確に X 文字の長さであることをどのように確認しますか?

4

4 に答える 4

57

これには(現在)組み込みメソッドがないため、独自のメソッドを追加する必要があります。これはうまくいきます:

jQuery.validator.addMethod("exactlength", function(value, element, param) {
 return this.optional(element) || value.length == param;
}, $.validator.format("Please enter exactly {0} characters."));

次に、次のように使用できます。

$("#formtovalidate").validate({
  rules: {
    somefield: {
      exactlength: 10
    }
   });

更新 - 仕組み

これがどのように機能するか尋ねられました。詳細はわかりません。この方法は、既存のものをモデルにしています。しかし、これはそれを説明するための私の最善の試みです。

  • この関数はvalueelement、およびを受け取りますparam
    • value検証されるフィールドに入力された値です
    • elementフィールドそのものです
    • paramルールの種類とコロンの後に来るものは何でもです。上記の例では、10 インチです。exactlength: 10
  • 次の行はreturnステートメントです。これにより、検証メソッドの最終的な判断が、それを呼び出したコードに返されます。返さtrueれる検証メソッドは、「このフィールドは検証に合格しました!」と言っています。それが置かれている行の値を返します。
  • return後に、「or」演算子 ( ) で区切られた 2 つの宣言が続き||ます。
    • ||演算子は、「この左の項目を評価する」という意味です。true の場合は、true を返します。そうでない場合は、右側のものを試してください。true の場合は、true を返します。それ以外の場合は、false を返します。
      • 左の商品はthis.optional(element). 要素がルールで必要ない場合、これは true を返し、検証も同様です。つまり、「このフィールドが必須であると言わなければ、有効かどうかはどうでもいい」ということです。
      • フィールドが必須の場合は、 の右側に移動し||ます。これが実際の検証テストです。フィールドの入力の長さと、指定した長さを比較します。それらが同じである場合、true が返され、メソッドは true を返し、検証はパスします。それ以外の場合、検証は失敗します。

それはそれについてです。詳細については、ドキュメント、特にカスタム検証方法に関する部分を参照してください。

于 2009-08-04T18:32:03.333 に答える
22

例:

rules : {
"someFieldName":{digits:true,minlength:20,maxlength:20}
}
于 2011-05-17T09:02:38.903 に答える
3

最も簡単な方法は、データ属性を介して既存の検証メソッドを使用し、明確にするために独自の検証メッセージを設定することです。

<input data-rule-minlength="8" data-rule-maxlength="8" data-msg-minlength="Exactly 8 characters please" data-msg-maxlength="Exactly 8 characters please">
于 2015-11-19T22:26:01.727 に答える