2011-03-30 124 views
0

我想在提交表单时显示一个JQuery-UI对话框。 我有我的代码,但我有以下想法,并想知道哪一个将是最理想的。从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
我应该设置在saveButton被点击的形式

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


怀疑
如果我这样做,并调用form.submit()不会openDialog再次调用它会创建一个循环。
OR


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


* 编辑:我将不胜感激,如果这能回答以及*
这是说。如果我在表单上设置了ASP.NET MVC Data Annotations。如何设置脚本,以便仅在运行MicrosoftValidations时打开对话框。我正在使用ASP.MVC 3.0,而不是使用Jquery Validation/Validator。


底线:
如何设置一个对话框,这样我得到的模态对话框,当一个人试图提交表单

回答

-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') 
} 
+0

这将满足,我会得到一个对话框打开时,我尝试提交form.However我openDialog()有一个“OK”按钮,它调用form.submit()当你点击它。不会再次触发openDialog()。 – frictionlesspulley 2011-03-30 21:21:08

+0

您可以在表单提交事件中执行'return confirm(“Ok?”)''。也;我认为摩擦需要他自己的自定义对话框,而不是标准的JavaScript确认对话框。 – roosteronacid 2011-03-30 21:43:02

+0

确认只是例如,你可以做你想要 – JiDai 2011-03-30 21:48:20

1

适度降级的办法。关闭我的头顶......

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


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

    return false; 
}); 


如果已禁用JavaScript,窗体将只需提交。但是,如果启用JavaScript,提交按钮(在表单中)的点击事件将打开一个对话框并阻止表单提交。你现在需要做的是在对话框的“确定”按钮上附加一个点击事件,并从那里提交表单...

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

什么情况下,当启用JavaScript,并且用户通过按Enter/Return提交表单。在这种情况下将不会显示对话框。 – frictionlesspulley 2011-03-30 23:45:28

+0

这不起作用 - 打开的对话框是非阻塞的。 – Hogan 2011-10-18 19:21:00