Ваш код ...
$('form').submit(function (e) {
var ques = $('name^="quiz[ques]"');
ques.each(function() {
$(this).rules("add", {
....
});
});
});
Вы не должны добавлять правила при отправке формы, в противном случае вы не можете ожидать проверки полей до нажатия кнопки отправки. Вы добавили бы правила , когда вы динамически создаете новые поля, которым нужны правила. Поэтому удалите метод .rules()
из обработчика отправки и вставьте внутрь любую функцию, создающую эти новые поля.
Динамически создать новое поле (поля) -> затем сразу добавить правило (ы)
Во-вторых, ваш селектор полностью сломан . Вам не хватает внешних скобок. Правильный формат для селектора «атрибут начинается с»: $('[attribute="value"]')
Итак, атрибут name
начинается с quiz[ques]
будет выглядеть так ...
$('[name^="quiz[ques]"]')
Если вам нужно быть более конкретным с селектором, вы можете добавить элемент textarea
...
$('textarea[name^="quiz[ques]"]')
Наконец, по умолчанию все скрытые поля игнорируются (не проверяются). Неясно, зачем вам нужно проверять textarea
элементы, если они остаются скрытыми, потому что пользователь никогда не сможет с ними взаимодействовать Вы можете добавлять / удалять правила из скрытых полей, и они будут автоматически проверяться при отображении и не проверяться при скрытии.
Если вам нужно проверить какие-либо поля, которые остаются скрытыми, вам нужно переопределить стандартные настройки ignore
. []
означает «ничего». Таким образом, ignore: []
означает, что ничего не игнорировать (подтвердить все).
$('#myform').validate({
ignore: [], // ignore nothing - validate everything
// other settings....
});