Anadi
@Anadi
Если ответ Вам помог мой, решением отметье его!

Как сделать проверку формы перед отправкой ajax запроса?

Привет всем знатокам!
Подскажите в моем случае сделать проверку на пустые поля + правильность заполнения. Я в js совсем не силен, поэтому прошу у вас помощи товарищи. В данный момент делаю проверку следующим образом.
// проверка телефона и почты на правильность
function checkPhone(input) {
    var RegPhone = new RegExp(/^((8|\+7)[\- ]?)?(\(?\d{3}\)?[\- ]?)?[\d\- ]{7,10}$/);
    return RegPhone.test(input);
}

function checkEmail(input) {
    var RegEMail = new RegExp(/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/);
    return RegEMail.test(input);
}

// какой то код не влияющий на форму и т.д., далее сама форма в $(document).ready(function () {

    $('form').submit(function () {
        var FormObj = $(this);
        var arFormData = FormObj.serializeArray();

        var phone = FormObj.find('input[name="phone"]');
        var email = FormObj.find('input[name="email"]');

        if (phone.val() != '') {
            if (checkPhone(phone.val())) {
                phone.css({'border': '2px solid #28a745'});
            } else {
                phone.addClass('error');
                phone.val('Введен не верный телефон');
                setTimeout(function () {
                    phone.removeClass('error');
                    phone.val('');
                }.bind(this), 2000);
            }
        } else {
            phone.addClass('error');
            phone.val('Введите ваш телефон');
            setTimeout(function () {
                phone.removeClass('error');
                phone.val('');
            }.bind(this), 2000);
        }


        if (email.val() != '') {
            if (checkEmail(email.val())) {
                email.css({'border': '2px solid #28a745'});
            } else {
                email.addClass('error');
                email.val('Введен не верный E-Mail');
                setTimeout(function () {
                    email.removeClass('error');
                    email.val('');
                }.bind(this), 2000);
            }
        } else {
            email.addClass('error');
            email.val('Заполните поле E-Mail');
            setTimeout(function () {
                email.removeClass('error');
                email.val('');
            }.bind(this), 2000);
        }


        $.ajax({
            type: "POST",
            url: '/include/ajax.php',
            data: {
                'AJAX': 'Y',
                'ACTION': 'REQUEST_ORDER_MAKE',
                'DATA': arFormData
            },
            dataType: 'json',
            timeout: 3000,
            error: function (text, error) {
                console.error('Error:' + text.ResponseText + ' | ' + error);
            },
            success: function ($data) {
                $('.modal-result-text-l').html($data);
                setTimeout(function () {
                    $('#modal-result-l').fadeIn();
                    $('#modal-result-l').addClass('open-l');
                    $('body').addClass('modal-open-l');
                }.bind(this), 1000);
            }
        });
        return false;

    });

Понимаю, что код ужасный, помогите привести к божескому виду, чтоб было по феншую. Хотелось бы объединить условия проверки чтоб код был чуть короче (если возможно) и если поля прошли проверку, то разрешаем отправку запроса. Объясните как сделать, пример не помешает, если вас это не обременит!

С одним полем могу сделать, а если полей больше то там трабл у меня) Простите за очередной нубский вопрос!
  • Вопрос задан
  • 752 просмотра
Решения вопроса 1
inkShio
@inkShio
$.ajax({
beforeSend: function(data) {
перед отправкой
},
success: function(data) {
успех отправки
},
error: function(xhr, ajaxOptions, thrownError) {
ошибка
}
});

Там еще какие то вещи есть, погугли.

Можешь еще забацать что то типо флагов

var error = false,

пробегаешься по полям, если пустые значит error = true;
иначе
выполняешь ajax запрос
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы