2

リモート ルックアップを使用して動的に追加された複数の入力を検証するルールを作成しようとしています。リモート ルール定義で検証されているフィールドを取得する方法がわかりません。例えば:

$.validator.addClassRules({
    refDataAcInput: {
        remote: {
            url: "/json/refDataLookup.html",
            type: "get",
            data: {
                groupName: function(a,b,c){
                    //$(this).data("groupName");
                    //THE ABOVE DOESN'T WORK, HERE I WANT TO GET THE VALUE OF THE FIELD BEING VALIDATED
                },
                term: function(a,b,c){
                    //$(this).val();
                    //THE ABOVE DOESN'T WORK, HERE I WANT TO GET THE VALUE OF THE FIELD BEING VALIDATED
                },
                exactMatch: "true"
            },
            dataFilter: function(data, type) {
                return data;
            },
            success: function(data, textStatus, jqXHR) {
                alert(textStatus);
            }
        }
    }
});

これどうやってするの?

4

1 に答える 1

0

私はあなたのアイデアが本当に好きですが、あなたがやりたいことは、現在のようにaddClassRulesを使用して行うことはできません。問題は実際にはjQueryValidateにあるのではなく、データを生成するときにjQuery.ajaxがどのように機能するかにあります。データオブジェクト内のこれらの関数は、コンテキストで呼び出されません(つまり、this期待どおりに入力されます)。jQueryコードは次のようになります。

value = jQuery.isFunction( value ) ? value() : value;

$ .ajaxが一般的に使用される方法のため、これが問題にならないようにローカル変数にアクセスできることは理にかなっていると思います(つまり、$。ajaxを呼び出す前に、必要なデータオブジェクトを作成するだけで済みます)。 )。Validateの場合、唯一のオプションは、によって提供されるデータを使用することremoteです。これは、入力名をキーとして、入力の値を値(つまりfieldName:value)として使用し、それを処理するようにリモートスクリプトを変更します。

データが必要なためにそれが選択できない場合は、ソースコードgroupNameの編集を検討できます。その場合、私が行うことは、この行(githubのL1024)を変更することです。

data[element.name] = value;

これに:

data = $(element).data();
data[element.name] = value;

jQuery.dataこれにより、要素に付加された値がajaxリクエストにプッシュされます。

于 2012-05-15T15:50:38.463 に答える