web-dev-qa-db-ja.com

jquery.validation-必須フィールドを検証するときにデフォルト値を無視する方法

Jquery検証プラグインを使用して登録フォームを検証しています。

各テキスト入力フィールドには、入力ボックスに値として事前に入力された指示があります

例:テキスト入力ボックスid = 'Name'の場合、デフォルト値は 'Enter YourName'に設定されます。以下のサンプルコードを貼り付けました。

<input type="text" id="Name" value="Enter Your Name" onfocus="if(this.value == 'Your Name'){this.value = '';}" type="text" class="required" onblur="if(this.value == ''){this.value='Your Name';}" size="25" />

私が知る必要があるのは、入力ボックスにデフォルトのメッセージまたは空の値が含まれている場合にプラグインが必須フィールドエラーをスローするように検証ルールで指定する方法です。

感謝します。

17
jack

私はvalidator.addMethodを使用してカスタム検証を作成することで問題を回避する方法を考え出しました。これは本当に簡単です。

以下に検証ブロックのスニペットを貼り付けました。

   //1. Define custom validation 
    $(document).ready(function() 
    {
    jQuery.validator.addMethod("defaultInvalid", function(value, element) 
    {
     switch (element.value) 
     {
      case "Your Name": -- this will be the default value in the Name text box
       if (element.name == "Your Name")
          return false;
     }
    }
    //2. Include custom validation in the rules for your element
    $("#aspnetForm").validate(
    {
      rules: 
      {
       Name: "required defaultInvalid"
      },
      messages: 
      {
       Name: "Please input your name"
      }
    })
   }

フォームにデフォルト値を持つすべての要素に同じものを使用しました。これはうまくいきます。

5
jack

私はこれが良いと思います:

jQuery.validator.addMethod("defaultInvalid", function(value, element) 
{
    return !(element.value == element.defaultValue);
});
19

カスタムエラーメッセージを追加したい場合は、これを使用してください。

jQuery.validator.addMethod("defaultInvalid", function(value, element) {
    return !(element.value == element.defaultValue);
}, 'Custom Error Message for this field');
2
Erik Larsson

私にとって、上記は次の変更でのみ機能しました。

jQuery.validator.addMethod("defaultInvalid", function(value, element) 
{
    switch (element.value) 
    {
        case "Your Name":
            if (element.name == "element_name") return false;
            break;
        default: return true; 
            break;
    }
});
2
Peter

ルールセクションの後にこれを追加するだけです

onfocusout: function(element) { $(element).valid(); }

そしてそれは大丈夫でしょう。

1
krsoni
$.validator.addMethod("defaultInvalid", function(value, element, param){
        var r = $(element).rules();
        var req=(this.objectLength(r))?r.required:false; // OR may be var req=r.required; // true, false or undefined.
        return !req || (value!=param);
    },$.validator.messages.required);

.。

,rules:{
            message: {
                defaultInvalid:$('#message').attr('placeholder')
            }
        }

このような機能は、「必須」および「オプション」フィールドの場合を考慮に入れています。

場合によっては「依存関係の不一致」というエラーメッセージが表示されるため、式「!req」は意図的に「this.optional(element)」を置き換えます。

0
Igor

複雑なフォームの入力フィールドを無視できるように、jquery.validationEngineにパッチを作成しました。次の変更を行いました。

  • Jquery.dropkickselectスキニング検証位置のサポートを追加します
  • Ve_invalid値の入力に無効な選択フィールドを追加します(有効な選択でなくてもディレクティブを表示できるようにするため)
  • HideAllInstantを追加して、遅延なしで検証を削除します
  • 元の入力が非表示の場合は、jquery.simpleImageCheck要素のサポートを追加します。代わりにsimpleImageCheckの場所を使用してください
  • SkipValidateクラスを追加して、一部のフィールドを無効にせずに検証を回避します
  • Prompt_errが未定義で、宛先がエラーを生成していた場合のエラーを修正しました
  • jquery.clearField.jsの検証を回避するためにclearFieldサポートを追加します
  • validateHiddenFields、非表示フィールドと非非表示フィールドの検証を追加します

あなたの場合、skipValidateクラスの変更を使用してこれを実行できます。パッチを当てたスクリプトは、英語のフィルターと一緒にここにあります(frのものも利用できます):

jquery.validationEngine.jsパッチ適用済み

jquery.validationEngine-en.jsパッチ適用済み

これらの変更をgitハブに送信する必要がありますが、現時点では送信する時間がありませんでした。

ジェロームゴッドバウト

パンテーラデンタル

0
user1296558

これを正しく機能させるには、「デフォルト」のケースを追加する必要があると思います。

 jQuery.validator.addMethod( "defaultInvalid"、function(value、element){
 switch(element.value){
 case "$ defaultText":
 if(element.name == "$ defaultText")
 return false; 
 break; 
 default:
 return true; 
 break; 
} 
}); 
0
user595562