0

コードを変更せずに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>

ご協力いただきありがとうございます。

4

1 に答える 1

0

概念的には、カスタム検証メソッドの名前を持つ data-method 属性を持つことができます。

この例をここで見ることができます: http://viralpatel.net/blogs/2009/01/calling-javascript-function-from-string.html

個人的には、そのレベルの構成が既に構築されており、あなたのアプローチで車輪の再発明が行われているように見えるため、これは私が jQuery 検証を使用する場所です。jQuery validate ではできないことを何をしようとしていますか?

于 2012-05-15T14:41:22.693 に答える