jQuery Validatorカスタムメソッド:同じページで複数のフォームを使用するには?

私はフォームを開始と終了の長さのユーザー入力を要求し、それはユーザーが挿入したいセクションの数に応じて、ページ上で可変回数繰り返すことができます。私はいくつかの検証を追加しようとしています。いずれかのフィールドのonChangeを呼び出す関数の中にカスタムバリデータメソッドを追加して、エンドの長さが開始より長くなっていて動作していることを確認しました。

ユーザーがページに2番目のフォームを呼び出すと、メソッドは中断して動作を停止します。その時点でどのようなエラーメッセージが残っているように見えますが、私はそれが変わらずにも、正しく検証された範囲の範囲外に出ていない限り、それは変わりません。

The input tag has this on both fields:
onchange="validateTheForm(this.form);"

ここで私の.jsファイル内のコードは、私はフォームのいずれかの入力を変更するたびにこれを呼び出します:

var validateTheForm = function(theForm) {
    $.validator.addMethod("endGreaterThanBegin", function(value, element) {
        return parseInt($('#endPoint').val(), 10) > parseInt($('#startPoint').val(), 10);
    }, "End Point Should be Greater than Start");

    $(theForm).validate({
        rules: {
            startPoint: {
                required: true,
                range: [0, 100]
            },
            endPoint: {
                required: true,
                range: [1, 100],
                endGreaterThanBegin: true
            }
        }
    });
    return true;
}

私はそれが何度も何度もメソッドを追加しようとすると問題になるかもしれないと考えましたが、それは最初のフォームでフィールドを変更し、決してブレークしないたびに発生します。メソッドが作成され、それらを新しいフォームに更新することがないときに、最初のフォームに関連付けられた変数を設定することと関係があるのだろうかと思います。

ベストアンサー

ルールを定義してバリデーターを一度適用し、有効なメソッドを使用してフォームを検証します。

Demo – http://jsfiddle.net/2hA8M/17/

function validateTheForm(){
    $('#signupform').valid();
}

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です