我有一个用xhrPost提交的表单,然后返回表单结果,再次使用表单让用户输入更多详细信息。该代码适用于Chrome,但使用IE时,destroy和destroyRecursive似乎不起作用,并且ajax返回将导致窗口小部件已经注册错误。
使用声明性格式将表单加载到dojo对话框中,当对话框打开并准备就绪时调用此函数:
var loadFunc = function() {
dojo.parser.parse('quickaddcontainer');
dojo.query('#quickAddBooking').onsubmit(function(e) {
e.preventDefault();
var xhrArgs = {
form: dojo.byId("quickAddBooking"),
url: '/booking/admin/quickadd?popup=1',
handleAs: "text",
load: function(data) {
dojo.place(data, 'quickaddcontainer', 'replace');
loadFunc();
},
error: function(error) {
dojo.byId("quickaddcontainer").innerHTML = "Form error: "+error;
}
}
dojo.byId('quickaddcontainer').innerHTML = 'Loading...';
dojo.xhrPost(xhrArgs);
dijit.byId('quickAddBooking').destroyRecursive();
});
}
为什么这在IE中不起作用?我已经尝试在加载函数中放置一个destroy / destroyRecursive,在xhrPost调用之前甚至findWidgets - 在表单上的destroyRecursive但是似乎都没有做任何事情。
Moan:有时候用dojo做这么简单的事情似乎很难 - 在其他框架中重新渲染永远不会导致问题。答案 0 :(得分:1)
似乎我已经回答了我自己的问题......将innerHTML调用移到了底层工作。
dojo.xhrPost(xhrArgs);
dijit.byId('quickAddBooking').destroyRecursive();
dojo.byId('quickaddcontainer').innerHTML = 'Loading...';