从json数据生成jquery验证规则和消息
我构建了一个JSFormBuilder函数,它根据外部json文件中的数据输出表单元素。在json数据中,它还包含验证规则和消息的数据 示例数据:从json数据生成jquery验证规则和消息,jquery,arrays,json,validation,object,Jquery,Arrays,Json,Validation,Object,我构建了一个JSFormBuilder函数,它根据外部json文件中的数据输出表单元素。在json数据中,它还包含验证规则和消息的数据 示例数据: "rows": [ [{ "Name": "FirstName", "Description": "Enter your name", "IsRequired": true, "Datatype": "string", "Maxlength": 255, "InputLabel": "Name",
"rows": [
[{
"Name": "FirstName",
"Description": "Enter your name",
"IsRequired": true,
"Datatype": "string",
"Maxlength": 255,
"InputLabel": "Name",
"InputInitialValue": "",
"InputSourceChannel": "constant",
"FieldWidth": 170,
"PlaceholderText": "Joe Blogs",
"ValidationMessage": "Please provide your name"
}]
]
我希望根据son文件中的数据为jQuery使用的规则和消息生成变量,并根据json数据中设置的值有条件地添加验证方法,如电子邮件、最大长度等
例如,我想将email:true
方法添加到电子邮件输入字段的规则中,以及required:true
方法(如果已设置)
预期结果示例
FirstName: {
required: true
},
LastName: {
required: true
},
Title: {
required: true,
max-length: 50
},
Company: {
required: true
},
Email: {
required: true,
email: true
},
Phone: {
required: true,
phone: true
}
演示
要添加email:true
方法,如果zDatatype:email`与数组中的值匹配,则需要if\else语句。
如果我想添加一个额外的方法,比如maxlength,它可能会得到一些混乱的额外If语句
有没有办法将所有必需的方法连接到一个变量中,然后在对象中调用该变量
我认为我的理解是正确的,所有条件语句都需要在js之外完成
感谢使用
$修复了此问题。扩展
以从每个validationRule类型/所需的唯一对象构造新对象
请参阅更新的小提琴
使用
$修复。扩展
从每个validationRule类型/所需的唯一对象构造新对象
请参阅更新的小提琴
var validationRulesRequired = {},
validationRulesType = {},
validationRules;
$.each(jsonData.rows, function(key, value) {
$.each(value, function(ikey, ivalue) {
// generate validation messages
if (ivalue.ValidationMessage) {
validationMessages[ivalue.Name] = ivalue.ValidationMessage;
}
// generate validation rules
if (ivalue.IsRequired) {
var validationInputTypes = ['email', 'phone'];
if ($.inArray(ivalue.Datatype, validationInputTypes) > -1) {
validationRulesType[ivalue.Name] = {
[ivalue.Datatype]: true,
};
}
validationRulesRequired[ivalue.Name] = {
['required']: true,
};
}
});
});
var validationRules = $.extend(true, {}, validationRulesRequired, validationRulesType);
console.log(validationRules);