我正在使用jQuery validate对我的表格进行验证。
$("#myform").validate({
rules: {
email: {
customemail: true
}
},
messages: {
firstName: $('#' + requestTypeValue + '_' + 'firstName').attr('data-error'),
lastName: $('#' + requestTypeValue + '_' + 'lastName').attr('data-error'),
email: $('#email').attr('data-error')
},
这可以正常工作。但是现在我需要进行更改,以便消息对象可以基于全局变量具有动态的FEILD名称,因此我需要执行这样的操作:
$("#myform").validate({
rules: {
"email": {
customemail: true
}
},
messages: {
"myGlobalVar" + firstName: $('#' + requestTypeValue + '_' + 'firstName').attr('data-error'),
"myGlobalVar" + lastName: $('#' + requestTypeValue + '_' + 'lastName').attr('data-error'),
"myGlobalVar" + email: $('#email').attr('data-error')
},
我在想,如果我在此方法之外创建消息对象,那么我最终会这样,可能会起作用
$("#myform").validate({
rules: {
"email": {
customemail: true
}
},
messages: myMessageObject
},
,但我仍然不确定语法以这种方式创建动态对象。
想法?
更新:奇拉格·拉文德拉(Chirag Ravindra(的答案看起来完全是我需要的,所以我疲倦了,但它不起作用。因此,作为第一步,我根据 Chirag Ravindra尝试了此操作:
$("#myform").validate({
rules: {
email: {
customemail: true
}
},
messages: {
Prefix_firstName: $('#' + requestTypeValue + '_' + 'firstName').attr('data-error'),
lastName: $('#' + requestTypeValue + '_' + 'lastName').attr('data-error'),
email: $('#email').attr('data-error'),
jobTitle: $('#' + requestTypeValue + '_' + 'jobTitle').attr('data-error'),
company: $('#' + requestTypeValue + '_' + 'company').attr('data-error'),
phone: $('#' + requestTypeValue + '_' + 'phone').attr('data-error'),
comments: $('#' + requestTypeValue + '_' + 'comments').attr('data-error')
},
这适用于prefix_firstname字段,但这不起作用:
var validationMessages = {};
validationMessages = {
Prefix_firstName: $('#' + requestTypeValue + '_' + 'firstName').attr('data-error'),
lastName: $('#' + requestTypeValue + '_' + 'lastName').attr('data-error'),
email: $('#email').attr('data-error'),
jobTitle: $('#' + requestTypeValue + '_' + 'jobTitle').attr('data-error'),
company: $('#' + requestTypeValue + '_' + 'company').attr('data-error'),
phone: $('#' + requestTypeValue + '_' + 'phone').attr('data-error'),
comments: $('#' + requestTypeValue + '_' + 'comments').attr('data-error')
},
$("#myform").validate({
rules: {
email: {
customemail: true
}
},
messages: validationMessages,
我真的不明白为什么仅通过将消息移入对象就会导致其失败...
我不确定这是有效的语法:
{
"myGlobalVar" + firstName: $('#' + requestTypeValue + '_' + 'firstName').attr('data-error'),
"myGlobalVar" + lastName: $('#' + requestTypeValue + '_' + 'lastName').attr('data-error'),
"myGlobalVar" + email: $('#email').attr('data-error')
}
您可以使用数组符号使用动态键创建对象(如果是您的意图(:
var requestTypeValue = 'test';
var myGlobalPrefix = 'prefix_';
var myMessagesObject = {};
myMessagesObject[myGlobalPrefix+'firstname'] = $('#' + requestTypeValue + '_' + 'firstName').attr('data-error');
console.log(myMessagesObject);
/**
Output:
{
"prefix_firstname": "Error Message"
}
**/
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id='test_firstName' data-error="Error Message"></div>
然后,您可以在验证方法中使用myMessagesObject
处理程序
$("#myform").validate({
rules: {
"email": {
customemail: true
}
},
messages: myMessagesObject
},...)