-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并且messages处于同一级别,而不是messagesrules.

于 2012-11-10T17:22:20.807 回答