jquery validate: сгенерированные dyanamical флажки (с не тем же именем)

0

Я использую более старую версию расширения powermail в typo3. Этот доб. создает следующую разметку:

<input type="checkbox" id="uid53_0" value="1" name="tx_powermail_pi1[uid53][0]">
<input type="checkbox" id="uid53_1" value="2" name="tx_powermail_pi1[uid53][1]">
<input type="checkbox" id="uid53_2" value="3" name="tx_powermail_pi1[uid53][2]">

Таким образом, имена не совсем то же самое.

Я пробовал этот фрагмент, чтобы проверить:

$('#formid').validate({
    rules: {
        'tx_powermail_pi1[uid53]': {
            required: true
        }
}

Но конечно, он не работает из-за чисел в атрибутах имени.

Я подумал, может быть, что-то вроде шаблона tx_powermail_pi1[uid53][*] в rules: часть может помочь, но это не так.

Я хочу, чтобы флажок не менее 1 в этой группе должен быть проверен.

  • 0
    Я не уверен, что это работает, но попробуйте [name ^ = "tx_powermail_pi1"], иначе дайте им общий класс
  • 0
    Параметр rules принимает только правила, объявленные одним полным name за раз; по id , по class , по селектору jQuery и по шаблону все это запрещено. Вы должны использовать метод .rules('add') внутри jQuery .each() . И поскольку каждый флажок имеет свое name , вы должны использовать правило require_from_group . Смотрите ответ ниже.
Теги:
checkbox
jquery-validate

1 ответ

0

Если вы хотите сделать только один флажок из группы (когда каждый член группы имеет другое name), используйте метод require_from_group который является частью файла additional-methods.js.

Вы также можете сэкономить много строк кода, используя метод .rules() внутри jQuery .each().

tx_powermail_pi1[uid53] все элементы, начиная с tx_powermail_pi1[uid53].

$('input[name^="tx_powermail_pi1[uid53]"]').each(function () {
    $(this).rules('add', {
        require_from_group: [1, this],
        messages: {
            require_from_group: "please check one"
        }
    });
});

Затем, чтобы объединить все три повторяющихся сообщения в один, используйте параметр groups...

$('#formid').validate({
    // other rules & options
    groups: {
        checkbox: 'tx_powermail_pi1[uid53][0] tx_powermail_pi1[uid53][3] tx_powermail_pi1[uid53][4]'
    }
});

Рабочий ДЕМО: http://jsfiddle.net/xLNVf/2/

Ещё вопросы

Сообщество Overcoder
Наверх
Меню