-1

アプリケーションを jQuery Validate 1.7 から 1.11 に移動し、すべてのビューのコードを 1.10 バージョンと同期するように変更しました。

ただし、シナリオでvalidate.jsは、null オブジェクト例外がスローされます。

この例外がスローされる js の関数に絞り込みましたが、問題を引き起こしている特定の LOC に到達できません/新しいバージョンと互換性がありません。

トラブルシューティング中に の 1.7 バージョンを使用しましたがvalidate.js、すべて正常に動作しているようです。

この問題をデバッグ(ツール/その他の方法)または解決する方法について、誰かが情報を共有できますか?

注: コードを共有することはできません。

解決策: これがこの問題を解決する正しい方法であるか、またはアルゴリズムを変更する必要があるかをお知らせください。

この問題は、ケース 2 からケース 1 に移行する際に発生しました (問題のコメントを参照)。このシナリオでは、チェックされた「チェックボックス」のみがグループではなくサーバーに戻されます。

そのため、validatetargetFor は、渡された要素がグループではなくコントロールであるため、validate.js で失敗し、index [0]エラーがスローされます。

validationTargetFor: function (element) {
            // if radio/checkbox, validate first element in group instead

        if ( this.checkable(element) ) {
         element = this.findByName( element.name ).not(this.settings.ignore)[0];
        }
        return element;
        },

次のように変更しました。

validationTargetFor: function (element) {
            // if radio/checkbox, validate first element in group instead

            if (this.checkable(element)) {
                if (this.findByName(element.name).not(this.settings.ignore)[0] == undefined)
                    return element;
                else
                    return this.findByName(element.name).not(this.settings.ignore)[0];
            }

            return element;
        },
4

1 に答える 1

0

Sparky に感謝します。ビューのコードを変更したところ、問題が修正されました。最初に、依存するすべての応答コントロールをクラスに追加し、たとえば「スキップ」してから、フォーム検証からこのクラスを無視しました。

("#form").validate({
        groups: { checks: checkbox_names },
        groups: { radios: radiobox_names },
        errorPlacement: function (error, element) {
           //some code            
        },
        ignore: "skip"
    });

そのため、動的な質問 (依存する質問) が問題なくポストバックされるようになりました。

于 2013-10-03T15:16:11.773 に答える