Отправка связанной формы с помощью jQuery UI Dialog

0

У меня есть аналогичный код в другом месте нашего проекта, но я не могу заставить его работать то же самое в этом разделе. Предполагается, что это произойдет, когда нажата кнопка отправки формы, форма привязана до тех пор, пока я не укажу, чтобы отвязать ее, и она открывает диалоговое окно. Когда пользователь нажимает "да" или нет, форма должна отвязываться и отправляться, но часть отправки не работает должным образом.

Я уверен, что unbind работает, потому что я могу нажать "да" или "нет", и окно закроется. Затем я могу снова нажать кнопку отправки и успешно отправить форму. Код для этого раздела показан ниже:

$("#injuryStatusForm").bind('submit', function(e) {
   e.preventDefault();
   $("#sendEmailsConfirm").dialog('open');
});
$("#sendEmailsConfirm").dialog({
   autoOpen: false,
   resizable: false,
   width:500,
   modal: true,
   buttons: {
      "Yes, Send Emails": function() {
         $(this).dialog("close");
         $("#injuryStatusForm").append('<input type="hidden" name="emails" value="true" />');
         $("#injuryStatusForm").unbind("submit").submit();
      },
      "No, DON'T Send Emails": function() {
         $(this).dialog("close");
         $("#injuryStatusForm").unbind("submit").submit();
      },
      Cancel: function() {
         $(this).dialog("close");
      }
   }
});

Это единственная форма на странице, поэтому не должно быть конфликтов. Код из другого раздела аналогичен тому, что он показывает форму для создания учетной записи. При нажатии кнопки "Отправить" отображается диалоговое окно jQuery и происходит такая же ситуация. Код для этого раздела приведен ниже:

$("#newAccountForm").bind('submit', function(e) {
  e.preventDefault();
  $("#parentConfirmation").dialog('open');
});
$("#parentConfirmation").dialog({
  closeOnEscape: false,
  open: function() { $(".ui-dialog-titlebar-close").hide(); },
  autoOpen: false,
  resizable: false,
  width:600,
  modal: true,
  buttons: {
     "No, I am not a Parent or Legal Guardian": function() {
        //window.location = "/login/";
        $(this).dialog("close");
        window.location = "#flash";
        $('#flash').html('<p class="error">*You must be a Parent or Legal Guardian to create an account.</p>');
     },
     "Yes, I am a Parent or Legal Guardian": function() {
        $(this).dialog("close");
        $('#newAccountForm').unbind('submit').submit();
     }
  }
});

Кажется, я не могу понять, почему первый код кода (код статуса травмы) не будет работать, пока будет введен новый код учетной записи. Какие-либо предложения?

  • 0
    Почему вы вообще отменяете событие отправки? Пользователь получает диалог подтверждения только один раз?
  • 0
    И да и нет. Показывается один раз, если пользователь нажимает да или нет. Если они нажимают «да» или «нет», форма отправляется, и данные сохраняются в базе данных. Он просто закрывает окно, если пользователь нажимает кнопку «Отмена» или кнопку «x», и НЕ отправляет форму. Он остается на той же странице. Я нашел этот метод в другом месте при переполнении стека, как способ разрешить всплывающие окна в диалоговом окне jQuery перед отправкой формы. Если бы был лучший способ, я был бы открыт, чтобы увидеть это.
Показать ещё 3 комментария
Теги:
forms
jquery-ui-dialog
jquery-dialog

1 ответ

0
Лучший ответ

Проблема действительно возникла из элемента ввода типа ввода в теле HTML. Элемент submit имеет атрибут имени и вызывает проблемы. После удаления атрибута name представление формы после развязывания формы в диалоге сработало.

<input type="submit" id="submitStatusComment" name="submit" value="Save" />

к

<input type="submit" value="Save" />

(Мне также не нужен идентификатор, поскольку он не использовался нигде на странице).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню