Я использую более старую версию расширения 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 в этой группе должен быть проверен.
Если вы хотите сделать только один флажок из группы (когда каждый член группы имеет другое 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/
rules
принимает только правила, объявленные одним полнымname
за раз; поid
, поclass
, по селектору jQuery и по шаблону все это запрещено. Вы должны использовать метод.rules('add')
внутри jQuery.each()
. И поскольку каждый флажок имеет своеname
, вы должны использовать правилоrequire_from_group
. Смотрите ответ ниже.