从Jquery UI对话框提交表单

时间:2011-03-30 21:09:04

标签: jquery asp.net-mvc-3 javascript-events jquery-ui-dialog

我想在提交表单时显示JQuery-UI对话框。 我有代码,但我有以下想法,想知道哪个是最理想的。

   var openDialog =function(){
      //set up dialog .
      var saveButton = // "OK" of dialog -> click event calls: submit the form
      var cancel = //  "Cancel" of dialog -> click event calls :close the dialog
   };


方法01
我应该将表单设置为

$('form').submit(function(evt){
   openDialog();
});



如果我执行此操作并在单击saveButton时调用form.submit(),则不会再次调用openDialog,这将创建一个循环。


方法02
我应该在表单中设置单击提交按钮/链接以调用openDialog()并使用提交。 如果单击确认的“确定”按钮而不触发表单上的提交事件设置,我将如何调用form.submit()。


* 编辑:我很感激,如果这也可以回答*
这就是说。如果我在窗体上设置了ASP.NET MVC数据注释。如何设置脚本,以便仅在运行MicrosoftValidations时才打开对话框。我正在使用ASP.MVC 3.0而不使用Jquery Validation / Validator。


底线:
我如何设置一个对话框,以便在尝试提交表单时获得模态对话框

2 个答案:

答案 0 :(得分:1)

优雅的退化方法。在我的头顶......

<form>
    <input type="submit" id="submit" text="Submit" />
</form>    


$("#submit").click(function ()
{
    // open dialog here

    return false;
});


如果禁用JavaScript,表单将只提交。但是如果启用了JavaScript,则提交按钮(在表单中)上的单击事件将打开一个对话框并阻止表单提交。您现在需要做的是在&#34; OK&#34;上附加点击事件。对话框中的按钮,然后从那里提交表单......

$("#dialog_submit").click(function ()
{
    $("form").submit();
});

答案 1 :(得分:-1)

添加preventDefault()以不提交表单,以便稍后使用对话框

提交
$('form').submit(function(evt){
   evt.preventDefault();
   openDialog();
   // I think return false should work too
   return false;
});

编辑:确定有一个无限循环 为避免这种情况,您必须使用以下命令在openDialog中提交表单:

$('form')[0].submit()

在这种情况下,不会触发提交事件(在Safari中测试)

$().ready(function()
{
$('form').submit(function(evt){
   evt.preventDefault();
   openDialog();
   // I think return false should work too
   return false;
})
})

function openDialog()
{
    if(confirm("ok ?"))
        $('form')[0].submit()       
    else
        alert('form not submitted')
}