Javascript 如何在dojo中刷新对话框
我有一个来自对话。一切都能正常工作,但在db中保存数据后,如何刷新输入中的值 是否有技巧刷新整个表单,或者当有人按“取消”按钮隐藏对话框时,我应该使用dialog.reset()?如果只能通过reset()方法完成,那么当按下escape和右上角的关闭十字时,我如何处理事件Javascript 如何在dojo中刷新对话框,javascript,dojo,Javascript,Dojo,我有一个来自对话。一切都能正常工作,但在db中保存数据后,如何刷新输入中的值 是否有技巧刷新整个表单,或者当有人按“取消”按钮隐藏对话框时,我应该使用dialog.reset()?如果只能通过reset()方法完成,那么当按下escape和右上角的关闭十字时,我如何处理事件 致以最诚挚的问候通常,如果用户关闭了一个对话框,我会销毁它并创建一个新的对话框 当用户关闭对话框时,您可以使用类似这样的方法捕获并清理对话框: myDialog.connect(myDialog, 'close', func
致以最诚挚的问候通常,如果用户关闭了一个对话框,我会销毁它并创建一个新的对话框 当用户关闭对话框时,您可以使用类似这样的方法捕获并清理对话框:
myDialog.connect(myDialog, 'close', function(){myDialog.destroy();});
请注意,在对话框小部件上使用connect()
方法意味着当小部件被销毁时,连接本身也将被清除
漂亮整洁:)
如果您只是想清除表单,可以在close connect中使用document.myform.reset()
一个更完整的示例:
showDia: function(){
myDia = new dijit.Dialog({
title: "Public Reminder",
content: "<center>My incredible dialog content that will change the world</center><br>"+
"<form id='fooBarForm'>"+
"<input type='hidden' name='fooName' id='fooId' value='fooValue'></input>"+
"<select name='barName' style='margin: 3px;' id='barId'>"+
"<option value='barOpt1'>test1</option>"+
"<option value='barOpt2'>test2</option>"+
"</select>"+
"</form>",
style: "width: 320px;"
});
myDia.connect(myDia, 'close', function(){myDia.destroy();});
// OR you can call `reset()` on the fooBarForm instead of `myDia.destroy()`, and when
// you call `showDia()`, check if the dialog already exists and then just call `show()` on
// it
myDia.show();
}
showDia:function(){
myDia=新建dijit.Dialog({
标题:“公众提醒”,
内容:“我难以置信的对话内容将改变世界
”+
""+
""+
""+
“测试1”+
“测试2”+
""+
"",
样式:“宽度:320px
});
连接(myDia,'close',function(){myDia.destroy();});
//或者可以在fooBarForm上调用'reset()',而不是'myDia.destroy()`,以及何时调用
//调用'showDia()`,检查对话框是否已经存在,然后只需在上调用'show()`
//它
myDia.show();
}
现在,关于这一点的一点是,它引入了一个全局名称(myDia)。但是您可以很容易地将其作为对象的一个成员,但事实并非如此。showDia还应该是对象上的成员方法(即,不是全局函数)
此外,这通常是通过使用内容窗格从URL中提取内容来完成的。如果通过程序将对话框创建为new dijit.dialog(),然后,当您设置url时,您必须将一个额外参数设置为随机数,这样对服务器的每个请求都将被视为新请求……这就是诀窍……事实上,我已经通过这种方式成功了。great:)但当我销毁对话框时,我不能再次使用show()。当然它被破坏了,但是我怎么能再展示它呢?现在我只是静态地在div html中生成对话框:如果您确实想重复使用它,那么您可以如上所述连接到close事件,并在该点清除表单,或者连接到
show()
方法,然后执行该操作。如果你想重新显示它,并且你已经破坏了它,只需以同样的方式重新创建它:)嗯,我理解,但我不知道如何编写它,你能不能很好地给我一个提示或一个示例?添加了一个更完整的示例,你可以按照建议执行并连接到show()
方法。当对话框打开时,您执行ajax调用以从服务器获取最新数据,然后使用返回的数据设置表单字段。用户保存后,是否要清除输入?最好在随机数上使用时间戳。。。比如newdate().getTime();