Показать сообщение отдельно
  #9 (permalink)  
Старый 27.10.2016, 03:32
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

event.preventDefault(); - отменяет действие формы по умолчанию, то есть ее отправление, а значит

$("input").addClass('input-error');
return false; - это уже в общем то пустой звук, как и в конце обработчика return false; ни к чему.

Если .ajaxSubmit(), значит у вас CMS MODX, так? Или подключили этот плагин? Вкупе с jQuery каша полнейшая.

console.log(вывод) - это для отладки, проверили, выбросили.

$("input").removeClass('input-error'); и $("input").addClass('input-success'); - это кому, если форм на странице 20 штук, а обработчик отправки формы работает с текущей? И если их 20, то это что:$("form").attr('action'), $("form").find('[type=reset]').click(), а обработчик отправки формы работает с текущей?

Либо вы не просто копируете то, что вам пишут, но еще и читаете и вникаете что к чему, либо вы напишите монстра, который естественно работать не будет.

Словами это так:

$("form").submit(function(event) { - всем формам на странице установить ЭТОТ обработчик события отправления формы

event.preventDefault(); - отменить отправку формы по умолчанию

а далее в обработчике this - это ссылка на текущую форму (но не как объект jQuery, а как DOM элемент страницы), и достаточно использовать ее а не ковыряться опять в структуре DOM. Но в дальнейшем, по ходу сценария this может быть и переопределен, а также посредством JQ изменяются классы элементов, тогда можно поступить так, с учетом того, что в jQuery своих ajax-методов как грязи и .ajaxSubmit() совсем не нужен:

$.valHooks.input = { //тут мы будем обрезать крайние пробелы у полей формы, перед использованием их значений посредством jQuery 
    get: function(e) {
        return $.trim(e.value)
    }
};

$(function() { //тоже самое что и $(document).ready(function ()...
    $('form').submit(function(e) {
        e.preventDefault();
        var f = this, //текущая! форма как DOM, а не объект jQuery
            e = $(f.elements).slice(0, -2), //а это элементы формы без кнопки submit/reset, если они последние форме!, как объекты jQuery
            //и если 20 форм имеют разнличные поля, и какждая из них может иметь разное их количество, 
            //то все проверки нужно делать проходом в цикле по этим полям, проверяя значения каждого 
            err = 0; //признак ошибки проверки полей формы - если 0, то нет, 1 - есть незаполненные поля
        e.each(function() {
            //проверяем значение поля, и если не заполнено,
            //то err = 1 и добавляем класс input-error элементу
        })
        //проверяем, если нет ошибок отправляем форму
        if(!err) {
            $.ajax({ //отправка формы ajax-методом
                url: f.action,
                type: 'POST',
                dataType: 'json',
                success: function(data) {
                    f.reset(); //сбрасываем текущую форму!
                },
            })    
        }         
    });
});


Что у вас за 20 форм, почему не обрабатываются только богу известно, и коли хотите получить ответ, то приводите примеры форм, либо поясняйте в чем их разница/схожесть.

Последний раз редактировалось laimas, 27.10.2016 в 10:31.
Ответить с цитированием