使用jQuery UI对话框提交绑定表单

时间:2013-12-13 19:15:01

标签: jquery forms jquery-ui jquery-ui-dialog jquery-dialog

我在项目的其他地方有类似的代码,但我似乎无法在本节中使用它。应该发生的是当单击表单提交按钮时,表单被绑定,直到我指定取消绑定它并打开一个对话框窗口。当用户单击是或否时,表单应取消绑定并提交,但提交部分似乎无法正常工作。

我很确定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();
     }
  }
});

我似乎无法找到为什么第一组代码(伤害状态代码)在新帐号代码时无法运作。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

问题实际上来自HTML正文中的输入类型提交元素。 submit元素有一个name属性并导致问题。删除name属性后,在对话框中取消绑定表单后,表单提交。

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

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

(我也不需要ID,因为它没有在页面的任何地方使用。)