Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: для новичков > JS как прекратить работу функции при FALSE


Автор: Cheizer 12.9.2016, 16:47
Друзья помогите разобраться, всю голову изломал, есть функция аяксом отправляет форму, с валидацией полей по умолчанию.

Есть задача валидации поля емайл только если в него начали писать, я дописал свою валидацю, вот она:

Код

     emailval: function () {
    $('.client_email').blur(function() {
        if($(this).val() != '') {
            var pattern = /^([a-z0-9_\.-])+@[a-z0-9-]+\.([a-z]{2,4}\.)?[a-z]{2,4}$/i;
            if(pattern.test($(this).val())){
                $(this).css({'border' : '1px solid #569b44'});
                 return true;
            } else {
                $(this).css({'border' : '1px solid #ff0000'});
                return false;
            }
        }
    })
    },


А вот функция отправки формы, она отправляет если в поле емайл вообще не ввели ничего но ввели остальные поля, и не должна отправлять если все заполнили поля НО начали писать емейл но не правильно, без собаки и тд. Так вот, как дописать проверку к функции submitFu если функция emailval вернула true????
Никак не получается.

Код

 submitFu: function () {
                        _.validateFu(_.labels)
            _.emailval()
                        if (!_.form.has('.' + _.invalidCl).length)            
                            $.ajax({
                                type: "POST",
                                url: _.mailHandlerURL,
                                data: {
                                    name: _.getValFromLabel($('.name', _.form)),
                                    email:$('input.client_email',_.arctform).val()||'nope',
                                    phone: _.getValFromLabel($('.phone', _.form)),
             
                    owner_email:$('input.owner_email',_.form).val()||'nope',
                                    stripHTML: _.stripHTML
                                },
                                success: function () {
                                    _.showFu()
                                }
                            })
                            
                    },

Автор: igorold 13.9.2016, 08:08
Отслеживай правильность ввода e-mail через переменную.

var flEmail = 0;

а вместо return true , пиши flEmail = 1;

а потом добавь проверку этой переменной на 1.

Автор: _zorn_ 16.9.2016, 18:05
Всегда задавался вопросом, зачем "отслеживать" правильность емайла, если все равно через подтверждение ?
Ты должен ПОМАГАТЬ пользователю, а не ЗАПРЕЩАТЬ.
Вот и помогай правильно (подсказки и т.п.)
А для подсказок не нужен зубодробительный регекасп. Достаточно проверить есть ли собака в строке...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)