2012-02-03 6 views
0

を使用して新しいものを適用することはできません私はこのような問題に直面しました:は、バリデータを削除し、jQueryの検証プラグイン

私たちは、クライアント側の検証を実行するためにjqueryの検証プラグインを使用しています。フォームを初期化するために使用されるスクリプトは、動的に生成されます。フォーム自体もjTemplatesとjsonを使って動的に生成されます。

問題は、いくつかの入力要素の検証を再初期化し、エラーの配置を変更する必要があるということです。私は、プラグインのapiでバリデーションルールとエラーの配置を再開するメソッドを見つけることができませんでした。

私はこのような何かをしようとしました:

次のコードは、複数のオブジェクトに対して実行される(someUniqueValueは、これらのオブジェクトから取得されます)。次のコマンドを実行した後

<span id="validate-theExactFieldToValidate" class="hidden" style="display:block" value="someUniqueValue"></span> 

$("input[value='someUniqueValue']").next('input:text').rules('remove'); 
私は(私は、エラーメッセージがこのスパンに表示する)は、次のしているを確認する各入力の前に

//removing old rules. 
$("input[value='someUniqueValue']").next('input:text').rules('remove'); 
//I have a hidden field with unique value and an input after it so the code above is ok. 

$("#someForm").validate({ 
    errorPlacement: function (error, elementToValidate) { 
     var $messageElement = $("[id='theExactFieldToValidate'][value='someUniqueValue']"); 
     //error placement logic 
    }, 
    rules: { 
     "theExactFieldToValidate": { 
      required: true, 
      maxlength: 25 
     } 
    } 
}); 

要素の検証ルールは失われますが、新しいルールを適用しようとしても何も起こりません。

$("input[value='someUniqueValue']").next('input:text').rules() 

ちょうど空のオブジェクトを返す上記のコード。

個別入力の検証ロジックとエラー配置を変更するにはどうすればよいですか?

答えて

0

jsfiddleにコードを配置できますか?あなたのコードで直面している正確な問題を簡単に特定することができます。

これを試してみてください!

$("input[value='someUniqueValue']").next('input:text').rules("theExactFieldToValidate",rules) 
0

あなたは、このように最初にそれらを作成した後、あなたの検証設定を変更することができます。

var validator = $("#someForm").validate({ 
    errorPlacement: function (error, elementToValidate) { 
     var $messageElement = $("[id='theExactFieldToValidate'][value='someUniqueValue']"); 
     //error placement logic 
    }, 
    rules: { 
     "theExactFieldToValidate": { 
      required: true, 
      maxlength: 25 
     } 
    } 
}); 

validator.settings.rules.theExactFieldToValidate.required = false; 
関連する問題