我的脚本中出现以下错误。请帮忙:
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中得到了正确的值。通过发出警报来测试。
答案 0 :(得分:0)
您不能将data.modules[2].fields[0].name
用作对象文字中的标识符。标识符始终是名称,而不是表达式的值。
如果要将值用作标识符,则必须先创建对象,然后使用索引语法设置属性。例如:
var obj = {};
obj[data.modules[2].fields[1].name] = "required";
(我试着为你想要创建的对象编写实际代码,但是代码是如此破碎(即错误或缺少分隔符,无法匹配的括号),如果没有知识就不可能知道对象结构应该是什么关于它应该做什么。)
答案 1 :(得分: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"
}
}
});
答案 2 :(得分: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
位于同一级别,而不是messages
位于rules
内。