使用jQuery UI对话框确认表单提交操作

9

我在页面上有多个表单,对于每个表单,我希望用户在提交前进行确认。但是当用户确认提交时,如何让此对话框知道用户正在提交哪个表单?它是否需要自定义参数?谢谢。

$("#dialog-confirm").dialog({
        resizable: false,
        height:140,
        modal: true,
        buttons: {
            'Confirm submit': function() {
                document.______???????_____.submit();
            },
            Cancel: function() {
                $(this).dialog('close');
            }
        }
    });
$('.allForms').submit(function(){
      $('#dialog-confirm').dialog('open');
});
3个回答

17
您可以将它存储在变量中,就像这样:
var currentForm;
$("#dialog-confirm").dialog({
        resizable: false,
        height:140,
        modal: true,
        buttons: {
            'Confirm submit': function() {
                currentForm.submit();
            },
            Cancel: function() {
                $(this).dialog('close');
            }
        }
    });
$('.allForms').submit(function(){
      currentForm = this;
      $('#dialog-confirm').dialog('open');
      return false;
});

既然你只是使用它,然后立即离开页面,没有必要使它变得更加复杂。


谢谢。但是现在,当我点击“确认提交”后,它只是再次调用了$('.allForms').submit(function()),并没有真正提交。或者这是另一个问题? - redbluegreen
3
@redbluegreen - 抱歉,我更新了答案...那个currentForm = this; 不应该被包裹在 $()里面。 - Nick Craver

1
根据Nick Craver的答案,您可以这样编写:
$('.allForms').submit(function(){
      currentForm = this;

      $('#dialog-confirm').dialog({
        resizable: false,
        height:140,
        modal: true,
        buttons: {
            'Confirm submit': function() {
                currentForm.submit();
            },
            Cancel: function() {
                $(this).dialog('close');
            }
        }
      });
      return false;
});

1

还有什么想法吗?

$(this.form).submit();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接