我想在提交表单时显示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。
的底线:
我如何设置一个对话框,以便在尝试提交表单时获得模态对话框
答案 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')
}