Проверка Jquery действительна, хотя есть ошибки в удаленной проверке - PullRequest
0 голосов
/ 02 июня 2018

У меня есть проверка JQuery.Работает нормально, кроме проверки пульта.Кажется, он проверяет пульт после того, как форма уже отправлена.

Вот мой код:

$('#m_login_signup_submit').click(function (e) {
    e.preventDefault();

    let btn = $(this);
    let form = $('#register_form');

    form.validate({
        rules: {
            fullname: {
                required: true
            },
            email: {
                required: true,
                email: true,
                remote: '/account/check-email',
            },
            password: {
                required: true
            },
            password_confirmation: {
                required: true,
                equalTo: '#register_password'
            },
            agree: {
                required: true
            }
        },

        messages:{
            email:{remote:'Email already registered'}
        },
    });

    if (form.valid()) {

        btn.addClass('m-loader m-loader--right m-loader--light').attr('disabled', true);
        form.ajaxSubmit({
            url: '/account/register',
            success: function (response, status, xhr, $form) {
                let result = $.parseJSON(response);
                if (result.status === 'success') {

                    form.clearForm();
                    form.validate().resetForm();

                }else{
                    showErrorMsg(form, 'danger', result.message);
                }
            }
        });
    }

});

Как я могу сделать так, чтобы форма отправлялась только тогда, когда все проверки пройдены, включая удаленную?

1 Ответ

0 голосов
/ 02 июня 2018
  1. Я думаю, что вы могли бы добиться большего успеха, поместив свой Ajax внутри submitHandler обратного вызова метода .validate(), чем делая это внешне. Согласно документам , это "правильное место для отправки формы через Ajax" .

  2. НЕ помещайте .validate() внутрьclick обработчик.Метод .validate() используется для инициализации плагина в вашей форме, и его не нужно вызывать при каждом нажатии кнопки.Вы вызываете его один раз, и плагин автоматически фиксирует нажатие кнопки ( должно быть type="submit").

$(document).ready(function() {

    $('#register_form').validate({
        rules: {
            fullname: {
                required: true
            },
            email: {
                required: true,
                email: true,
                remote: '/account/check-email',
            },
            password: {
                required: true
            },
            password_confirmation: {
                required: true,
                equalTo: '#register_password'
            },
            agree: {
                required: true
            }
        },
        messages:{
            email:{remote:'Email already registered'}
        },
        submitHandler: function(form) {
            $('#m_login_signup_submit').addClass('m-loader m-loader--right m-loader--light').attr('disabled', true);
            $(form).ajaxSubmit({
                url: '/account/register',
                success: function (response, status, xhr, $form) {
                    let result = $.parseJSON(response);
                    if (result.status === 'success') {
                        $(form).clearForm();
                        $(form).validate().resetForm();
                    } else {
                        showErrorMsg(form, 'danger', result.message);
                    }
                }
            });
        }
    });

});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...