$(".form-validate button").click(function (e) {
- var form = $(this).closest('form')[0];
e.preventDefault();
-
+ var form = $(this).closest('form')[0];
var yiiform = $("#" + form.id);
- var errors = {};
$('.messages').html('');
yiiform.find('.has-error').removeClass('has-error');
yiiform.find('.help-block').remove();
- if ($('.multiple-input-list__item').length === 0) {
- errors['__common'] = ['Добавьте хотя бы одно списание перед сохранением.'];
- }
-
- let allRowsHaveImage = true;
-
- $('.multiple-input-list__item').each(function () {
- let row = $(this);
- let hasImageInRow = row.find('.list-cell__images_row img').length > 0;
- let fileInput = row.find('.list-cell__imageFiles input[type="file"]');
- let hasFilesSelected = fileInput.length && fileInput[0].files.length > 0;
-
- if (!hasImageInRow && !hasFilesSelected) {
- allRowsHaveImage = false;
- return false;
- }
- });
-
- if (!allRowsHaveImage) {
- if (!errors['__common']) errors['__common'] = [];
- errors['__common'].push('Пожалуйста, добавьте хотя бы одно фото к каждому списанию перед сохранением.');
- }
-
- if (Object.keys(errors).length > 0) {
- renderErrors(errors);
- return false;
- }
-
$.ajax({
type: "post",
url: "validate",
yiiform.find('.has-error').removeClass('has-error');
yiiform.find('.help-block').remove();
- if (data.success) {
- yiiform.submit();
+ if (!data.success) {
+ let errors = data.errors || {};
+
+ // Проверка на фото после AJAX
+ let allRowsHaveImage = true;
+ $('.multiple-input-list__item').each(function () {
+ let row = $(this);
+ let hasImageInRow = row.find('.list-cell__images_row img').length > 0;
+ let fileInput = row.find('.list-cell__imageFiles input[type="file"]');
+ let hasFilesSelected = fileInput.length && fileInput[0].files.length > 0;
+
+ if (!hasImageInRow && !hasFilesSelected) {
+ allRowsHaveImage = false;
+ return false;
+ }
+ });
+
+ if (!allRowsHaveImage) {
+ if (!errors['__common']) errors['__common'] = [];
+ errors['__common'].push('Пожалуйста, добавьте хотя бы одно фото к каждому списанию перед сохранением.');
+ }
+
+ renderErrors(errors);
} else {
- renderErrors(data.errors);
+ yiiform.submit();
}
})
.fail(function () {
return false;
function renderErrors(errors) {
- var values = [];
+ var messages = [];
$.each(errors, function (key, value) {
- values.push(value);
+ messages.push(value);
if (key !== '__common') {
var field = yiiform.find('[name="' + key + '"]');
}
});
- var strOut2 = values.flat().join(', <br>');
+ var strOut2 = messages.flat().join(', <br>');
$('.messages').html(strOut2);
}
});
\ No newline at end of file