バリデータプラグインでjQueryを使用しています。「必要な」バリデーターを自分のものに置き換えたいと思います。かんたんだよ:
jQuery.validator.addMethod("required", function(value, element, param) {
return myRequired(value, element, param);
}, jQuery.validator.messages.required);
ここまでは順調ですね。これはうまくいきます。しかし、私が本当にやりたいことは、場合によっては関数を呼び出し、残りの場合はデフォルトのバリデーターを呼び出すことです。残念ながら、これは再帰的であることが判明しました。
jQuery.validator.addMethod("required", function(value, element, param) {
// handle comboboxes with empty guids
if (someTest(element)) {
return myRequired(value, element, param);
}
return jQuery.validator.methods.required(value, element, param);
}, jQuery.validator.messages.required);
バリデーターのソース コードを調べたところ、"required" の既定の実装は、jQuery.validator.messages.required で匿名メソッドとして定義されています。したがって、私が使用できる関数への他の (匿名ではない) 参照はありません。
addMethod を呼び出す前に関数への参照を外部に保存し、その参照を介してデフォルトのバリデーターを呼び出すことには違いはありません。
私が本当に必要としているのは、デフォルトの必要なバリデーター関数を、参照ではなく値でコピーできるようにすることです。しかし、かなりの検索の後、私はそれを行う方法を理解できません。出来ますか?
それが不可能なら、元の関数のソースをコピーできます。しかし、それはメンテナンスの問題を引き起こします。「より良い方法」がない限り、私はそれをしたくありません。