У меня есть главная деталь формы для табличного ввода и с enabledAjaxValidation=true
Пока все хорошо, форма проверяет все правила и показывает сообщения об ошибках при отправке или изменении любого значения любого элемента управления (событие onchange). Проблема возникает, когда я добавляю элементы управления в форму с помощью ajax, последние ведут себя не так, как оригинальные, они не отображают сообщения об ошибках.
То же самое, когда отправить с помощью кнопки я думаю что



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вам необходимо добавить вновь созданное/добавленное поле в проверку вручную для любых динамически созданных входных данных с помощью функции yiiActiveForm.add().
Вы не добавили код, который используете в настоящее время, когда нажимаете кнопку и добавляете новый ввод в форму через ajax. Итак, что вам нужно сделать, это когда вы получите ответ и добавите ввод в форму, просто добавьте новый ввод, используя следующий код.
Примечание. Измените атрибуты формы и поля соответствующим образом.
$('#form-id').yiiActiveForm('add', {
id: 'input-id',
name: 'input-name',
container: '.field-input',
input: '#input-id',
error: '.help-block',
validate: function (attribute, value, messages, deferred, $form) {
yii.validation.required(value, messages, {message: "Validation Message Here"});
}
});
Подробнее о проверка активной формы js
Обновлять
Если вы не хотите добавлять функцию проверки вручную для каждого ввода и у вас есть табличные вводы, вы можете получить доступ к любому из уже созданных подобных полей и привязать к нему функцию проверки.
Например, в приведенном выше примере, если поле name является табличным и принадлежит модели Contact, и у вас уже есть поле имени, заполненное в форме #contact-0-name, вы можете использовать функцию yiActiveForm.find() для доступа к атрибутам этого поля и назначить существующую проверку. см. пример ниже
var fieldAttributes = $("#form-id").yiiActiveForm("find", 'contact-0-name');
$('#form-id').yiiActiveForm('add', {
id: 'contact-1-name',
name: '[1][name]',
container: '.field-name',
input: '#contact-1-name',
error: '.help-block',
validate: fieldAttributes.validate
});
используйте что-то вроде кода ниже
error: function(jqXHR,textStatus,errorThrown) {
stopLoader('.modal-content');
$('.csv_errors').show();
if (jqXHR.status==422){
var responseText = $.parseJSON(jqXHR.responseText);
$.each(responseText.errors,function(key,value){
$('.csv_error ul').append('<li>'+value+'</li>');
});
}else{
var responseText = $.parseJSON(jqXHR.responseText);
$('.csv_error ul').append('<li>'+responseText.message+'</li>');
}
}