[英]JQuery Validate - Dynamic Form Field Messages
I am using JQuery Validate to do validation on my forms. 我正在使用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')
},
This works, pefectly. 完全有效。 but now I need to make a change so that the messages object can have dynamic feild names based on a global variable so I need to do something like this:
但是现在我需要进行更改,以便消息对象可以具有基于全局变量的动态字段名称,因此我需要执行以下操作:
$("#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')
},
I was thinking if I create the messages object outside of this method, then I would end up with something like this, might work 我在想如果我在此方法之外创建messages对象,那么我最终会遇到这样的情况,可能会起作用
$("#myform").validate({
rules: {
"email": {
customemail: true
}
},
messages: myMessageObject
},
but I'm still not sure on the syntax to create a dynamic object in this way. 但是我仍然不确定以这种方式创建动态对象的语法。
Ideas please? 有什么想法吗?
UPDATE: Chirag Ravindra Answer looked like exactly what I needed so I tired it, but it didn't work. 更新: Chirag Ravindra Answer看起来完全像我所需要的,所以我很累,但是没有用。 So as a first step I tried this based on Chirag Ravindra answer:
因此,作为第一步,我根据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')
},
This works for the Prefix_firstName field, BUT this doesn't work: 这适用于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,
I really don't understand why just by moving the messages in to an object causes it to fail... 我真的不明白为什么仅通过将消息移到对象中会导致它失败...
I'm not sure that this is valid syntax: 我不确定这是有效的语法:
{
"myGlobalVar" + firstName: $('#' + requestTypeValue + '_' + 'firstName').attr('data-error'),
"myGlobalVar" + lastName: $('#' + requestTypeValue + '_' + 'lastName').attr('data-error'),
"myGlobalVar" + email: $('#email').attr('data-error')
}
You can use the array notation to create objects with dynamic keys (if that is your intention): 您可以使用数组符号来创建具有动态键的对象(如果您打算这样做):
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>
You can then use the myMessagesObject
handler in your validation method 然后,您可以在验证方法中使用
myMessagesObject
处理程序
$("#myform").validate({
rules: {
"email": {
customemail: true
}
},
messages: myMessagesObject
},...)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.