1

jquery.validate ライブラリを使用してフォームが検証された後、現在失敗しているルールをループできるようにする必要があります。

私は以下を見てきました:

$('form').validate().errorList

これは、エラーのメッセージと要素を返しますが、失敗したルールのルール/名前は返しません。

$('form').validate().errorMap

これは、要素 ID とメッセージのペアを返すだけです。

$('form').validate().settings.rules

これは、すべての要素とそれらに関連付けられたルールのリストを返しますが、どの要素が現在失敗しているかを示す値は返しません。

要素 (またはその ID) と失敗したルールの両方を含むものが必要です。もちろん、要素は複数の失敗したルールにマップされる場合があります。

目立たないライブラリにフックできるイベントがあれば (すべてのイベントが目立たないようにサポートされているわけではないようです)、失敗時のルールと要素を教えてくれます。これは理想的です。

4

2 に答える 2

3

拡張機能で使用できるメソッドを探している場合は、次のようにすることができます。

//update FormatAndAdd function to store failed rule values in data
var oldFormatAndAdd = validator.formatAndAdd;

validator.formatAndAdd = function (element, rule) {
    oldFormatAndAdd.apply(this, arguments);
    $.data(element, "failedMethod", rule.method);
};

var oldCheck = validator.check;

//update check to remove failed rules from data if element is valid
validator.check = function (element) {
    var result = oldCheck.apply(this, arguments);
    if (result) {
        $.data(element, "failedMethod", null);
    }
};

ルール情報をデータに保存するだけですが、これを更新して代わりに errorList を操作できると確信しています。

于 2012-11-27T17:08:33.863 に答える
0

validate()関数はウィジェットを初期化します。フォームを検証しません。次のように、無効なフォームのハンドラーを指定する必要があります。

$("form").validate({
    invalidHandler: function(form, validator) {

これを行うと、バリデーターオブジェクトのerrorList属性に無効な要素の配列が含まれます。

ここに完全なドキュメント:http://docs.jquery.com/Plugins/Validation/validate#options

コメントに沿って、理論的には585行目を変更してruleメソッドをerrorListに含めることができます。

this.errorList.push({
    method: rule.method,
    message: message,
    element: element
});

基本的なルールでテストしましたが、カスタム関数バリデーターがある場合は、それらも試してみてください。

于 2012-07-19T21:31:22.663 に答える