Я использую петрушку для проверки моей формы с ajax и laravel на стороне сервера. Проверки на стороне клиента работают правильно, комбинируя стили начальной загрузки. Этот код:
$('#form_create').parsley({
errorClass: 'is-invalid',
successClass: 'is-valid',
errorsWrapper: '<span class="invalid-feedback"></span>',
errorTemplate: '<div></div>'
}).on('form:validate', function (formInstance) {
console.log('Event: form:validate');
}).on('form:error', function(formInstance){
let errors = formInstance.fields.length;
let message = errors === 1
? 'check the field marked in red'
: 'check the ' + errors + ' fields marked in red';
showErrorsForm(message);
}).on('form:submit', function() {
return false;
}).on('form:success', function(){
$("#btn_submit").prop('disabled', 'disabled');
$.ajax({
method: "POST",
url: $("#form_create").attr('action'),
data: $("#form_create").serialize()
}).done( function(data, textStatus, jqXHR) {
console.log('Done');
}).fail( function (jqXHR, textStatus, errorThrown) {
$("#btn_submit").removeAttr('disabled');
$.each(jqXHR.responseJSON.errors, function(key,value){
$("#"+key).parsley().addError('errorServer', {message: value, updateClass: true});
});
});
});
С помощью этого кода я присваиваю ошибки, возвращаемые laravel:
$.each(jqXHR.responseJSON.errors, function(key,value){
$("#"+key).parsley().addError('errorServer', {message: value, updateClass: true});
});
Я пытаюсь сделать так, чтобы при повторной проверке клиентской стороны серверошибки, возвращаемые laravel, устраняются, и отображаются только ошибки проверки петрушки. Это работает индивидуально:
$('#name').parsley().on('field:validate', function() {
$(this.$element).parsley().removeError('errorServer', {updateClass: true});
});
Но это неэффективно, когда форма содержит слишком много полей. Есть идеи для реализации этого? Спасибо