1

jquery.validate を使用して、日付フィールドを含むフォームを検証しようとしています。ぼかしで適切に検証することができます: これを行いたいフィールドに validateonblur 属性を追加します:

        $("input[validateonblur]").blur(function () {
            $(this.form).validate().element(this);
        });

しかし、フォームを送信すると、その時点での検証は必須フィールドのみを検証します。日付フィールドにどんな種類のゴミがあるかは気にしません。HTMLの属性として行うかどうかにかかわらず、dateISO属性を完全に無視します...

<input name="DOB" id="DOB" type="text" required dateISO="true" class="blah" />

...またはそのように:

    $("#MyForm").validate( {
        rules: {
            DOB: {
                required: true,
                dateISO: true
            }
        } );

...または両方。

また、フォームを送信すると、エラーのポップアップ/ツールチップが表示されるのに対し、$(this.form).validate().element(this); を呼び出すと、まったく異なるエラーが表示されることに気付きました。方法として、HTML にラベルを挿入します。しかし、繰り返しになりますが、彼らのdateISOドキュメントページには、私が見ているものとはまったく異なる動作の例があります.実際の日付値を検証し、フォーム送信時にラベルでエラーを行います. どうして?!彼らは私が持っていないパラメータを与えていません。なぜ異なる結果が得られるのでしょうか?

ドキュメントはかなり貧弱です。ドキュメントでは、validate() を呼び出して検証を設定すると、フォームに valid() メソッドが与えられると主張していますが、実行時には未定義です。

//  UPDATE: I had a very poor understanding of jquery when I wrote this. 
alert(MyForm['validate']); // 'undefined'

このライブラリは使用可能な状態ですか、それとも時間を無駄にしていますか?

4

2 に答える 2

0

答えは、 Parsley.jsを使用することであることが判明しました。ダウンロードしてから5分以内に使用可能な検証を行いました.

一部のカスタム検証にはいくつかの制限があります (たとえば、その場でエラー メッセージを生成するのは奇妙な面倒です (たとえば、2 つのフィールドの値を比較するカスタム バリデーターを追加する場合、ユーザーが理解できるフィールド名を参照するには) (更新: シンプル -- もちろん、HTML でフィールドごとのカスタム エラー メッセージを作成できます!))) しかし、これまでのところ、私はそれが本当に気に入っています。たとえば、moment.js を使用して任意の日付形式を検証するカスタム バリデータを作成するのは簡単なことでした。

于 2013-07-17T21:24:59.837 に答える