在Bootstrap表单验证的rules属性中使用JS数组



我想在下面验证函数的规则:{}属性中使用我自定义的JS数组?有什么想法吗?我正在寻找一个纯JS的解决方案,没有php或else。

这是一个完美的工作功能,其功能没有任何问题。我只想使用一个数组,而不是单独使用字段。

$(formId).validate({
    rules: {
        country_id: {
            required: true
        },
        state_id: {
            required: true
        },
        name: {
            required: true,
            lettersonly: true
        }
    },
    highlight: function (element) {
        $(element).closest('.form-group').addClass('has-error');
    },
    unhighlight: function (element) {
        $(element).closest('.form-group').removeClass('has-error');
    },
    errorElement: 'span',
    errorClass: 'help-block',
    errorPlacement: function (error, element) {
        if (element.parent('.input-group').length) {
            alert(error);
            error.insertBefore(element.parent());
        } else {
            error.insertBefore(element);
        }
    },
    showErrors: function (errorMap, errorList) {
        if (errorList.length) {
            var s = errorList.shift();
            var n = [];
            n.push(s);
            this.errorList = n;
        }
        this.defaultShowErrors();
    },
    invalidHandler: function (form, validator) {
        submitted = true;
    }
});

在这里回答我自己的问题,这很有趣。

我想动态创建一个JS对象,然后将该对象绑定到rules属性,这就完成了任务。耶!!!!

var rules = new Object();
$(arrayRequiredField).each(function (index, value) {
        var fieldId = arrayRequiredField[index][0];
        var str = "rules." + fieldId + "= { required : true }" ;
        if(arrayRequiredField[index][1]=='Empty'){
            eval(str);
        }
});
$(formId).validate({
    rules: rules,
    highlight: function (element) {
        $(element).closest('.form-group').addClass('has-error');
    },
    unhighlight: function (element) {
        $(element).closest('.form-group').removeClass('has-error');
    },
    errorElement: 'span',
    errorClass: 'help-block',
    errorPlacement: function (error, element) {
        if (element.parent('.input-group').length) {
            alert(error);
            error.insertBefore(element.parent());
        } else {
            error.insertBefore(element);
        }
    },
    showErrors: function (errorMap, errorList) {
        if (errorList.length) {
            var s = errorList.shift();
            var n = [];
            n.push(s);
            this.errorList = n;
        }
        this.defaultShowErrors();
    },
    invalidHandler: function (form, validator) {
        submitted = true;
    }
});

最新更新