コードを変更せずに1つのバリデーターを多くの異なるフォームで動作させたい場合、jQueryを使用して独自のバリデーターを作成しています(jQueryの独自のバリデーターを使用していません)。
したがって、現在のバリデーターは送信時にバインドされ、フィールドをチェックします。したがって、すべての通常のケースを処理します。フォームに検証済みフィールドのいずれも含まれていない場合、そのフィールドは無視されます。
フォームに独自の検証を持つ追加のフィールドがあるというまれなケースを除いて、これはうまく機能します。これを、標準のバリデータがあるJSファイルではなく、PHPファイル自体に追加できるようにしたいと考えています。
カスタム検証チェックを追加するためにバリデーターを拡張する最良の方法は何ですか? 最初にすべての検証エラーを収集してから、標準のバリデーターと各ページに個別に追加されたカスタムの拡張検証の両方から、すべてのエラーを含む 1 つのアラート ボックスを出力するため、統合する必要があります。
いくつかのコンテキストのために、いくつかのコード スニペットを含めましたが、主に疑似コードです。
myvalidator.js:
$('form[data-validator=custom]').live('submit', function(e) {
// Then checks if the field exists and validates
$('[data-validate]').each(function() {
// Check each field that has data-validate="email" for example
});
// If there are errors, add error message to one variable
// At the end of the validation, display one alert with all the collected errors
if(errors > 0) {
alert(error_string);
return false;
}
}
form9312.html
<form data-validator="custom">
<input type="text" name="email" data-validate="email" /> <!-- standard validation -->
<input type="text" name="blarg" data-validate-custom="blarg" /> <!-- needs custom -->
<input type="submit" />
</form>
<script type="text/javascript">
// Add custom validation here
// How?
function validate_blarg() {
// If it passes validation, return true;
// If it fails, return an error message: "Blarg must be 5 characters long."
}
</script>
ご協力いただきありがとうございます。