Отправка модальной всплывающей формы и другой формы одновременно - PullRequest
0 голосов
/ 10 декабря 2011

У меня есть две формы.Один находится в модальном всплывающем окне, а другой - на странице внизу.Я хочу отправить их одновременно, используя этот код:

$('.window .submitlink').click(function (e) {
    $('#form2').submit();                            
    $('#form1').submit();
});

Но существует одна проблема, а именно: она не обрабатывает страницу в действии form2, а просто обрабатывает действие в form1.

Кстати, я делаю это в WordPress.Есть идеи?

Ответы [ 2 ]

0 голосов
/ 10 декабря 2011

Поведение по умолчанию для HTML-форм (то, что вы запускаете с помощью .submit(), - это немедленно следовать за действием формы после завершения начального действия. Чтобы переопределить это, вы должны предпринять шаги, чтобы заставить его работать как вы ' Я ожидал, делая одно представление за другим.

Сложность вашего текущего процесса заключается в том, что вы не разрешаете получать какие-либо отзывы в случае неудачной отправки. В результате отправки нет индикатора, который позволяет представлению уведомлять пользователя о проблеме, и при этом нет ничего, что препятствовало бы слепой отправке вторым в случае сбоя первого.

Два способа сделать это возможным:

  1. Объедините формы. Возможно, это идет вразрез с вашим дизайном кода, однако
  2. Гнездо Аякса подчиняется. Это позволяет получать динамическую «обратную связь» с представлением и запускать / останавливать вторую отправку в зависимости от успешности первой, без переопределения действия по умолчанию с номером 2.

Некоторые соображения:

  • если вы используете кнопку внутри формы, она отправит форму по умолчанию, если вы не выполните «переопределение по умолчанию»
  • Если вы идете по маршруту ajax, используйте .serialize() в вашей форме, чтобы получить значения без необходимости указывать их id по id
0 голосов
/ 10 декабря 2011

Вам нужно будет динамически создать сообщение, используя содержимое каждой формы.Сначала вам нужно параметризовать формы, а затем отправить эти данные через $ .post или $ .ajax

Например: var data = {};

$('#form1 input').each(function () {
    data[$(this).attr('name')] = $(this).val();
}

$('#form2 input').each(function () {
    data[$(this).attr('name')] = $(this).val();
}
$.post('mytarget/address/topost/to', data);

Предполагается, что вы отправляете сообщение втакое же место.Если нет, вам придется использовать отдельные операторы $ .post.

...