0

ビュー全体で JavaScript の一部をクリーンアップしようとしています。やりたいことの 1 つは、jQuery 検証コードを外部スクリプト関数に移動し、処理/検証する必要があるフィールドへの参照を渡すことです。私が直面している問題は、jQuery Validate の rules フィールドの署名がどのようにフォーマットされているかに関するものです。

$("#form").validate({
    rules: {
        txtNoSpam: {
            remote: WebSettings.SpamFilterValidationUrl
        }
    },
    messages: {
        txtNoSpam: {
            remote: "Answer is incorrect."
        }
    },
});

上記のコードでは、「txtNoSpam」は txtNoSpam というページ上の要素に直接マップされますが、むしろ txtNoSpam を初期化関数にオブジェクトとして渡し、提供されたオブジェクトの要素名をパラメーターとして使用して検証を正しいフィールドにマップします。名前:

function Init(form, field1)
    form.validate({
        rules: {
            field1.attr('name'): {
                remote: WebSettings.SpamFilterValidationUrl
            }
        },
        messages: {
            field1.attr('name'): {
                remote: "Answer is incorrect."
            }
        },
    });
}

これを達成する方法はありますか?

4

1 に答える 1

1

[] を使用できるように、段階的に検証オプションを構築してみてください。以下の例を参照してください。

function my_validate(field_name) {
   var opts = {rules:{},messages:{}};
   opts.rules[field_name] = {remote: WebSettings.SpamFilterValidationUrl};
   opts.messages[field_name] = {remote: "Answer is incorrect."};
   form.validate(opts);
}

更新:更新された質問を考慮して、ここに初期化があります:

function Init(form, field1)
   var opts = {rules:{},messages:{}};
   opts.rules[field1.attr('name')] = {remote: WebSettings.SpamFilterValidationUrl};
   opts.messages[field1.attr('name')] = {remote: "Answer is incorrect."};
   form.validate(opts);
}
于 2009-08-27T23:05:50.283 に答える