@daashuun

Почему исчезает сообщение об ошибке?

У меня есть форма, где есть несколько input, которые добавляются динамически из ajax-запроса, поэтому для них не срабатывает валидация на стороне клиента, заданная в модели (я пыталась найти хоть какую-то информацию о том, возможно ли добавить валидацию при формировании input, но так ничего и не нашла, если это как-то решается - отдельное огромное спасибо). Поэтому написала свой валидатор на jquery, все работает как надо, валидируется, но пропадает (именно пропадает, появляется на секунду и исчезает) сообщение об ошибке, хотя данные он не пропускает. Но если все остальные поля заполнены, то сообщение остается. И я просто не понимаю почему они исчезают, мне кажется, что я опробовала, наверное все уже.
$(document).ready(function(){

    $('input[name="NewForm[experience]"]').change(function(){
        var check = $(this).attr('id').slice(-1);
        addExp(check);
    });

    $('body').on('focusout', '.require', function() {
        var p = $(this).parent().children('p');
        if ($(this).val()=='') {
            $(this).closest('.form-group').addClass('has-error');
            $(this).attr('aria-invalid', true);
            p.text('Поле обязательно');
            p.addClass('help-block help-block-error ');
        } else {
            d = new Date();
            var invalid =  ($(this).attr('placeholder')=='2006') ? ($.isNumeric($(this).val())&&(parseInt($(this).val())>1899)&&(parseInt($(this).val())<=d.getFullYear())) : ($(this).val().search('\[А-Яа-яЁё]+$') == 0);
            if (invalid) {
        console.log(1);
                $(this).closest('.form-group').removeClass('has-error');
                $(this).attr('aria-invalid', false);
                p.text('');
                p.removeClass('help-block help-block-error ');
            } else {
                $(this).closest('.form-group').addClass('has-error');
                $(this).attr('aria-invalid', true);
                p.text('Поле заполнено неправильно');
                p.addClass('help-block help-block-error ');
            }
        }
    });

    $('#new').on('submit', function() {
        if ($('.require').length>0) {
            var thisInvalid = false;
            $.each($('.require'), function() {
                $(this).focusout();
                if ($(this).attr('aria-invalid')=='true') thisInvalid = true;
            });
            if (thisInvalid) return false;
        };
    });

});

function addExp (add) {
    if (add == 1) { 
        $child = $("#exp").children();
        id = ($child.length != 0) ? parseInt($child.last().attr('id').slice(-1))+1 : 1;
        $.ajax({
        type: "POST",
        url: "http://yii2/web/index.php?r=site%2Fexp",
        data: {
            'add' : add,
            'id' : id,
        },
        success: function (res) {
            $(res).appendTo('#exp') ;
            $('#add').addClass('is_visible');
        },
        error: function () {
            $('error').appendTo('#exp');
        }
    })} else {
        $('#exp').empty();
        $('#add').removeClass('is_visible');
    } 
}
  • Вопрос задан
  • 53 просмотра
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
Max.Credit Санкт-Петербург
от 150 000 ₽
Fort Financial Services Санкт-Петербург
от 100 000 до 150 000 ₽
ICNX Москва
от 80 000 до 150 000 ₽