Проверка JQuery - сообщения полей динамической формы - PullRequest
0 голосов
/ 26 апреля 2018

Я использую 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')

    },

Это работает, прекрасно. но теперь мне нужно внести изменения, чтобы у объекта сообщений могли быть динамические имена полей, основанные на глобальной переменной, поэтому мне нужно сделать что-то вроде этого:

$("#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

    },

но я все еще не уверен в синтаксисе для создания динамического объекта таким образом.

Идеи, пожалуйста?

UPDATE: Чираг Равиндра Ответ выглядел именно так, как мне нужно, поэтому я устал, но это не сработало. Итак, в качестве первого шага я попробовал это, основываясь на ответе Чирага Равиндры:

$("#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,

Я действительно не понимаю, почему простое перемещение сообщений в объект приводит к его отказу ...

1 Ответ

0 голосов
/ 26 апреля 2018

Я не уверен, что это правильный синтаксис:

{
     "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

 },...)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...