-1

jqueryバリデータープラグインに渡すパラメーターとして機能するオブジェクトがあります。

var  param = {rules: {
        name: {
            required: true
        },
        tel: {
            required: true,
            number: true
        }
       }
     };

同様のフィールドを持つ 3 つのフォームがありますが、それらは 、 などのよう'xxx[name]'に名前が付けられ'xxx[tel]'ています。param オブジェクト内のオブジェクトの名前を置き換える関数を記述する必要がありますが、何らかの理由でどのようにそれができます。私はもう試した:

function insertParam(par1) {
     var  param = {rules: {
        name: {
            required: true
        },
        tel: {
            required: true,
            number: true
        }
       }
     };

 param['rules']['name'] = param['rules'][par1 + '[name]'];
 param['rules']['tel'] = param['rules'][par1 + '[tel]'];

 return param;
 };

しかし、これはうまくいきません。では、これはどのように適切に行われるのでしょうか。フィードバックをいただければ幸いです。

編集:フィドルhttp://jsfiddle.net/qzgaS/

4

1 に答える 1

0

割り当て順序と表記法を混同しました。

プロパティ名に「特殊な」[文字 (例: ) を使用しているため、ブラケット表記を使用する必要があります。

それ以外の場合、定数プロパティの場合は使用します

foo.bar

それ以外の

foo['bar']

読みやすくするために。

テンプレートからパラメーター オブジェクトを生成する必要がありました。これは、目的のプロパティを持つオブジェクトを構築し、テンプレートの値をそれらに割り当てることで実行できます。

function insertParam(par1) {
     var  rules = {
        name: {
            required: true
        },
        tel: {
            required: true,
            number: true
        }
    };

    var result = {"rules":{}};
    result.rules[par1 + '[name]'] = rules.name;
    result.rules[par1 + '[tel]'] = rules.tel;

    return result;
};

呼び出されると、目的の出力が生成されます。

>>> insertParam('Call')

{
    "rules": {
        "Call[name]": {
            "required": true
        },
        "Call[tel]": {
            "required": true,
            "number": true
        }
    }
}

デモ

于 2013-07-28T11:19:26.340 に答える