Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从json数据生成jquery验证规则和消息_Jquery_Arrays_Json_Validation_Object - Fatal编程技术网

从json数据生成jquery验证规则和消息

从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",

我构建了一个JSFormBuilder函数,它根据外部json文件中的数据输出表单元素。在json数据中,它还包含验证规则和消息的数据

示例数据:

"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);