Включение кнопки после валидности всех полей форм jQuery validation

Есть простая форма, которой нужно провести валидацию и если все поля валидный с кнопки button нужно убрать значение disabled и изменить стили. Пример формы

<form id='form'>
<div>
<label for="first_name">{{ __('Last Name') }}</label>
<input type="text" name="first_name" id="first_name"
class="" value="{{ old('first_name') }}" placeholder="{{ __('Enter  
First Name') }}">
</div>
<div>
<label for="last_name">{{ __('Last Name') }}</label>
<input type="text" name="last_name" id="last_name"
value="{{ old('last_name') }}" placeholder="{{ __('Enter Last Name') 
}}">
</div>
<div>
<label for="name">{{ __('Name') }}</label>
<input type="text" name="name" id="name" value="{{ old('name') }}" 
placeholder="{{ __('Enter Name') }}">
</div>
<button id="update_button" disabled>{{ __('Continue') }}</button>
</form>

JS файл:

$('#form').validate({
rules: {
    first_name: {
            required: true,
            minlength: 2,
            maxlength: 20,
            regex: /^[a-zA-Zа-яА-ЯҐґЪъЭэ\-\S]+$/,
        },
        last_name: {
            required: true,
            minlength: 2,
            maxlength: 20,
            regex: /^[a-zA-Zа-яА-ЯҐґЪъЭэ\-\S]+$/,
        },
        name: {
            required: true,
            regex: /^(?=.*[a-zA-Z])[0-9a-zA-Z!@#$%^&*=\-._\S]{2,20}$/
        },
    },
messages: {
    first_name: {
            required: "",
            minlength: "",
            maxlength: "",
            regex: "",
        },
        last_name: {
            required: "",
            minlength: "",
            maxlength: "",
            regex: "",
        },
        name: {
            required: "",
            regex: ""
        },
    },
    errorPlacement: function(error, element) {
        error.insertAfter(element.parent());
    },
    errorClass: 'error-message text-red-500',
    validClass: "successDate",

    highlight: function (element, errorClass, validClass) {
        $(element).addClass(errorClass).removeClass(validClass);
        $(element).parent().addClass('border-red-500');
    },
    unhighlight: function (element, errorClass, validClass) {
        $(element).removeClass(errorClass).addClass(validClass);
        $(element).parent().removeClass('border-red-500');
    },
});
$('#form').change(function () {
    if ($('input#first_name').hasClass('successDate') &&      
$('input#last_name').hasClass('successDate') &&  
$('input#name').hasClass('successDate')) {
$('#update_button').attr('disabled', false).removeClass('text-gray- 
500').addClass('bg-
yellow-250 text-black');
} else {
$('#update_button').attr('disabled', true).removeClass('bg-yellow-250   
text-black  
disabled:opacity-100').addClass('text-gray-500');
}
});

В данном случае условие if не выполняется так как сначала выполняется $('#form').change(function () {} а после только происходит валидация и добавляется класс в нужный инпут, а нужно наоборот, сначала проводить валидацию и если поля валидный включить кнопку и дать е другие стили. Вопрос следующий, как включить кнопку только после того как все поля формы будут валидны?


Ответы (0 шт):