2

サーバーから返されたエラーを表示するためにjqueryvalidateを使用しようとしています。

これを行うためにvalidator.showErrors()メソッドを使用しています。

ここの例のようにメソッドを動作させることができます。

var validator = $("#myform").validate();
validator.showErrors({"firstname": "I know that your firstname is Pete, Pete!"});

ただし、私が達成しようとしているのは、同じフィールドまたは異なるフィールドに対して2つ以上の検証エラーが発生することです。ドキュメントによると、これは可能です

指定されたメッセージを表示します。キーは要素の名前を参照する必要があり、構成されたエラー配置を使用して、それらの要素の値が表示されます。

引数:

エラーObject<String, String> 入力名とメッセージの1つ以上のキー/値ペア。

showErrorsメソッドの内部を見ると、次のことがわかります。

    showErrors: function(errors) {
        if(errors) {
            // add items to error list and map
            $.extend( this.errorMap, errors );
            this.errorList = [];
            for ( var name in errors ) {
                this.errorList.push({
                    message: errors[name],
                    element: this.findByName(name)[0]
                });
            }
            // remove items from success list
            this.successList = $.grep( this.successList, function(element) {
                return !(element.name in errors);
            });
        }
        this.settings.showErrors
            ? this.settings.showErrors.call( this, this.errorMap, this.errorList )
            : this.defaultShowErrors();
    }

私は以下を試しました:

validator.showErrors({ "Id": "I know that your firstname is Pete, Pete!" },{ "Id":"test2"});

ただし、それでも最初のエラーのみが表示されます。

複数のエラーを表示するために使用する正しい形式のアイデア

4

1 に答える 1

3

したがって、正しい形式は次のようになります。

validator.showErrors({ "Id": ["I know that your firstname is Pete", "test2" ]});

残念ながら、2番目のエラーは最初のエラーのすぐ隣に表示されるので、次の問題はこれらをフォーマットするためのより良い方法を見つけることです。

于 2012-11-28T11:01:48.713 に答える