dojo ie9 destory在表单上递归

时间:2011-10-24 17:47:41

标签: javascript dojo

我有一个用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做这么简单的事情似乎很难 - 在其他框架中重新渲染永远不会导致问题。

1 个答案:

答案 0 :(得分:1)

似乎我已经回答了我自己的问题......将innerHTML调用移到了底层工作。

        dojo.xhrPost(xhrArgs);
        dijit.byId('quickAddBooking').destroyRecursive();
        dojo.byId('quickaddcontainer').innerHTML = 'Loading...';