我在项目的其他地方有类似的代码,但我似乎无法在本节中使用它。应该发生的是当单击表单提交按钮时,表单被绑定,直到我指定取消绑定它并打开一个对话框窗口。当用户单击是或否时,表单应取消绑定并提交,但提交部分似乎无法正常工作。
我很确定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)
问题实际上来自HTML正文中的输入类型提交元素。 submit元素有一个name属性并导致问题。删除name属性后,在对话框中取消绑定表单后,表单提交。
<input type="submit" id="submitStatusComment" name="submit" value="Save" />
要
<input type="submit" value="Save" />
(我也不需要ID,因为它没有在页面的任何地方使用。)