2011-12-07 10 views
1

複数のフォームがあり、共通フィールドを共有しています(たとえば、email)。それぞれ固有のフィールドがあります(フォームAではuniqueFieldA、フォームBではuniqueFieldB) 。に固有のルールに追加し、共通フィールド一回用(使用jQuery Validation Plugin)検証ルールのセットを書き、(各フォーム)を複数の場所でそれらのルール「を含む」:私は何をしたいかjQueryを使用して共通ルールを使用してフォームを検証する

その特定の形。このような

何か:

簡体HTML:

<form id="formA"> 
    <input name="email" /> 
    <input name="uniqueFieldA" /> 
</form> 

<form id="formB"> 
    <input name="email" /> 
    <input name="uniqueFieldB" /> 
</form> 

JS:

// Define rules common to all forms 
var commonRules = { 
    email: { 
    required: true, 
    email: true 
    }, 
} 

// Define rules for form A 
$("#formA").validate({ 
    rules: { 
    commonRules, //"include" common rules 
    uniqueFieldA: "required" //rule unique to this form 
    } 
}) 

// Define rules for form B 
$("#formB").validate({ 
    rules: { 
    commonRules, //"include" common rules 
    uniqueFieldB: "required" //rule unique to this form 
    } 
}) 

この(フル、正しいHTMLを使用したと仮定)を達成しますか?

答えて

4

これは構文上有効なJavaScript(JSLintはあなたにそれを伝えている可能性があります)、がないため動作しません。


$.extendここにあなたの友達です。 (テストされていない)、これを試してみてください:

// Define rules common to all forms 
var commonRules = { 
    email: { 
    required: true, 
    email: true 
    }, 
}; 

// Define rules for form A 
$("#formA").validate({ 
    rules: $.extend({ 
    uniqueFieldA: "required" 
    }, commonRules) 
}); 

// Define rules for form B 
$("#formB").validate({ 
    rules: $.extend({ 
    uniqueFieldB: "required" 
    }, commonRules) 
}); 

あなたは再帰的なマージを(「深い拡張」)共通のルールとフォーム固有のものとの間の重複がある場合に実行する必要があるかもしれません。

関連する問題