我想在下面验证函数的规则:{}属性中使用我自定义的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;
}
});