У меня есть аналогичный код в другом месте нашего проекта, но я не могу заставить его работать то же самое в этом разделе. Предполагается, что это произойдет, когда нажата кнопка отправки формы, форма привязана до тех пор, пока я не укажу, чтобы отвязать ее, и она открывает диалоговое окно. Когда пользователь нажимает "да" или нет, форма должна отвязываться и отправляться, но часть отправки не работает должным образом.
Я уверен, что 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();
}
}
});
Кажется, я не могу понять, почему первый код кода (код статуса травмы) не будет работать, пока будет введен новый код учетной записи. Какие-либо предложения?
Проблема действительно возникла из элемента ввода типа ввода в теле HTML. Элемент submit имеет атрибут имени и вызывает проблемы. После удаления атрибута name представление формы после развязывания формы в диалоге сработало.
<input type="submit" id="submitStatusComment" name="submit" value="Save" />
к
<input type="submit" value="Save" />
(Мне также не нужен идентификатор, поскольку он не использовался нигде на странице).