-1

スクリプトで以下のエラーが発生しています。助けてください:

missing : after property id
[Break On This Error]   

data.modules[2].fields[0].name:"required";

スクリプトを PFB します。

$("#frm").validate({
    "rules": {
        data.modules[2].fields[0].name: "required";
        data.modules[2].fields[1].name: {
            "required": "true",
            data.modules[2].fields[1].name: "true"
        }

        "messages": {
            data.modules[2].fields[0].name: "Enter your firstname",
            data.modules[2].fields[1].name: {
                "required": "Please enter a valid email address",
                "minlength": "Please enter a valid email address"
            }
        }
    });

これは私のhtmlフォームです:

html += '<form id="frm" method="get" type='+data.modules[2].type+' class='+data.modules[2].attributes.class+'name='+data.modules[2].name+
                    'action='+data.modules[2].action+'><p>'+data.modules[2].title+'</p>'
                    html += '<label class="firstname">'+data.modules[2].fields[0].label+'</label>';
                    html += '<input type='+data.modules[2].fields[0].type+'name='+data.modules[2].fields[0].name+'value='
                    +data.modules[2].fields[0].value+'/>';
                    html += '<label class="Email">'+data.modules[2].fields[1].label+'</label>';
                    html += '<input type='+data.modules[2].fields[1].type+'name='+data.modules[2].fields[1].name+'value='
                    +data.modules[2].fields[1].value+'/>';

上記のhtmlで正しい値を取得しています。アラートを出してテストしました。

4

3 に答える 3

0

data.modules[2].fields[0].nameオブジェクト リテラルの識別子として使用することはできません。識別子は常に名前であり、式の値ではありません。

値を識別子として使用する場合は、最初にオブジェクトを作成してから、インデックス構文を使用してプロパティを設定する必要があります。例:

var obj = {};
obj[data.modules[2].fields[1].name] = "required";

(作成しようとしているオブジェクトの実際のコードを書き込もうとしましたが、コードが壊れているため(つまり、セパレータが間違っているか欠落している、括弧が一致していない)、オブジェクト構造が何であるかを知らなければ、オブジェクト構造がどうあるべきかを判断することは不可能です.するはずです。)

于 2012-11-10T17:20:07.980 に答える
0

JavaScript 辞書の要素の間にコンマを含める必要があります。

$("#frm").validate({
    "rules": {
        data.modules[2].fields[0].name: "required",
        data.modules[2].fields[1].name: {
            "required": "true",
            data.modules[2].fields[1].name: "true"
        },

        "messages": {
            data.modules[2].fields[0].name: "Enter your firstname",
            data.modules[2].fields[1].name: {
                "required": "Please enter a valid email address",
                "minlength": "Please enter a valid email address"
            }
        }
    });
于 2012-11-10T17:20:31.990 に答える
0

オブジェクト リテラル構文では、変数をキーとして使用することはできません。プログラムで構成オブジェクトを構築することで、目的を達成できます。

var field1 = data.modules[2].fields[0].name;
var field2 = data.modules[2].fields[1].name;

var rules = {};

rules[field1] = "required";
rules[field2] = {
  "required": true
};

var messages = {};

messages[field1] = "Enter your firstname";
messages[field2] = {
  "required": "Please enter a valid email address",
  "minlength": "Please enter a valid email address"
};

$("#frm").validation({"rules": rules, "messages": messages});

また、コードには右中括弧がありませんでした。私はあなたのインデントによって、あなたが の中にいるのではなく、同じレベルにいることを望んrulesでいると仮定しています。messagesmessagesrules

于 2012-11-10T17:22:20.807 に答える