我有一个来自对话框。一切都有效,但如何在db中保存数据后刷新输入中的值?
是否有一个技巧可以刷新整个表单,或者当有人通过按“取消”按钮隐藏对话框时,我应该使用dialog.reset()吗?如果只能通过reset()方法完成,那么如何在按下escape并处理闭合交叉(在右上角)时处理事件
祝你好运
答案 0 :(得分:4)
通常,如果用户关闭了一个对话框,我只需销毁该对象并创建一个新对象。
当用户关闭对话框并清理它时,您可以使用类似的内容进行捕获:
myDialog.connect(myDialog, 'close', function(){myDialog.destroy();});
请注意,在对话框小部件上使用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();
}
现在,关于这一点的一件事就是引入全局名称(myDia)。但是你很容易使它成为一个对象的成员而事实并非如此。 showDia也应该是对象的成员方法(即,不是全局函数)。
此外,通常使用内容窗格从URL中提取内容。
答案 1 :(得分:1)
如果你通过你的程序创建对话框作为新的dijit.Dialog(),那么当你设置url时,你必须设置一个额外的参数作为随机数,因此每个服务器的请求将被视为新的请求.... ......这就是诀窍......实际上我已经成功了。