Проверка jQuery: регулярное выражение для входного значения имени - PullRequest
0 голосов
/ 28 мая 2018

Я пытаюсь добавить проверку формы

$('#reportForm').validate({
    rules: {
      'report[invoices_attributes][0][invoice_type]' :
  {
    required: true,
    'report[invoices_attributes][0][invoice_type]':true

  }
  }
  });

reportForm - это идентификатор моей формы.Все значения имени моего входного поля будут иметь вид 'report[invoices_attributes][indexnr]...' (так как я использую вложенные атрибуты и может быть 0 или более элементов)

Для этого я хочу сопоставить значение имени ввода для всех снапример: /^report\[invoices_attributes\]\[[0-9]\](.*)/

Как это можно добавить в поле правила для значения имени входа (в настоящее время 'report[invoices_attributes][0][invoice_type]'), чтобы соответствовать всем интересующим меня полям?

1 Ответ

0 голосов
/ 28 мая 2018

Во-первых, я бы полностью избегал форматирования кода в стиле Allman в JavaScript .


При объявлении правил внутри rules объекта .validate() вы можете только объявитьправило по одному полю за раз ...

$('#reportForm').validate({
    rules: {
        'report[invoices_attributes][0][invoice_type]': {
            required: true,
        },
        'report[invoices_attributes][1][invoice_type]': {
            required: true,
        },
        'report[invoices_attributes][2][invoice_type]': {
            required: true,
        },
        // etc.
    }
});

Если вы хотите объявить несколько полей, используйте метод .rules() вместе с jQuery .each() и любым подходящим селектором jQuery, который будет нацеленваша группа.

$('.myfields').each(function() {
    $(this).rules('add', {
        required: true
    });
});

У вас также не может быть макета, в котором все проверяемые поля имеют один и тот же атрибут name. Каждое поле должно иметь уникальный name. Или одна «группа» флажков / переключателей может иметь общий name. Обходного пути для этого не существует.

Если вам нужны только базовые правила, которые можно просто объявить с помощью логического значения, тогда вы можете использовать встроенные атрибуты вместо .rules() метода или rules объект.

<input name="foo" required="required" ....

альтернативно по классу ...

<input name="foo" class="required" ....

Дополнительная информация: https://stackoverflow.com/a/9056425/594235

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