Все сервисы Хабра
Сообщество IT-специалистов
Ответы на любые вопросы об IT
Профессиональное развитие в IT
Закрыть
Задать вопрос
raffy72
0
вклад
2
вопроса
0
ответов
0%
решений
Комментарии
Информация
Ответы
Вопросы
Комментарии
Подписки
Нравится
Отправка данных из нескольких форм с помощью одного ajax-обработчика. Как?
raffy72
@raffy72
Автор вопроса
Разобрался, это даже смешно: дело в том, что класс-то все-таки добавлялся, но его перекрывал стиль второй формы. Ну и я немного синтаксис запорол.
Спасибо, товарисчу
Алексей
за помощь. Выкладываю рабочий код, может кому пригодится:
$(document).on('submit', '.form-action-1', function(e)
{
e.preventDefault();
var error = false,
$form = $(this),
$name = $form.find('input[name="name"]'),
$phone = $form.find('input[name="phone"]');
if ($name.val() == '')
{
$name.addClass('input-error');
setTimeout(function(){
$name.removeClass('input-error');
}, 600);
error = true;
}
if ($phone.val() == '')
{
$phone.addClass('input-error');
setTimeout(function(){
$phone.removeClass('input-error');
}, 600);
error = true;
}
if (!error)
{
$form.find('.input-error').removeClass('input-error');
$.ajax({
type: 'POST',
url: 'mail.php',
data: $form.serialize(),
success: function() {
alert('Success');
$form.find('input[type=text]').val('');
}
});
}
return false;
});
Написано
более трёх лет назад
Отправка данных из нескольких форм с помощью одного ajax-обработчика. Как?
raffy72
@raffy72
Автор вопроса
Я так уже пробовал, и класс добавляется к инпутам только первой формы. Понимаю, что где-то тут собака зарыта, буду искать. Спасибо, что помогаете разобраться.
Написано
более трёх лет назад
Отправка данных из нескольких форм с помощью одного ajax-обработчика. Как?
raffy72
@raffy72
Автор вопроса
В консоли выводит: $name.addClass is not a function
Написано
более трёх лет назад
Отправка данных из нескольких форм с помощью одного ajax-обработчика. Как?
raffy72
@raffy72
Автор вопроса
Но и форма с пустым полем не отправляется, значит error = true работает.
Написано
более трёх лет назад
Отправка данных из нескольких форм с помощью одного ajax-обработчика. Как?
raffy72
@raffy72
Автор вопроса
В общем, сделал немного по-другому:
$form = $(this),
$name = $form.find('input[name="name"]').val(),
$phone = $form.find('input[name="phone"]').val();
Отправляет уже нормально, но вот в этом месте код не срабатывает:
if ($form.find('input[name="name"]').val() == '')
{
$name.addClass('input-error');
setTimeout(function(){
$name.removeClass('input-error');
}, 600);
error = true;
}
То есть, на почту приходит так, как надо, но при сабмите пустого поля, к нему не добавляется класс.
Написано
более трёх лет назад
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.
Войти через центр авторизации
Закрыть
Реклама
Спасибо, товарисчу Алексей за помощь. Выкладываю рабочий код, может кому пригодится:
$(document).on('submit', '.form-action-1', function(e)
{
e.preventDefault();
var error = false,
$form = $(this),
$name = $form.find('input[name="name"]'),
$phone = $form.find('input[name="phone"]');
if ($name.val() == '')
{
$name.addClass('input-error');
setTimeout(function(){
$name.removeClass('input-error');
}, 600);
error = true;
}
if ($phone.val() == '')
{
$phone.addClass('input-error');
setTimeout(function(){
$phone.removeClass('input-error');
}, 600);
error = true;
}
if (!error)
{
$form.find('.input-error').removeClass('input-error');
$.ajax({
type: 'POST',
url: 'mail.php',
data: $form.serialize(),
success: function() {
alert('Success');
$form.find('input[type=text]').val('');
}
});
}
return false;
});