jQuery validate-动态表单字段消息



我正在使用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
 },...)

相关内容

  • 没有找到相关文章

最新更新