【发布时间】:2012-08-02 17:36:00
【问题描述】:
我想使用dijit.form.Form 登录我的应用程序,允许dojo 执行表单验证并使用xhrPost 提交表单。我相信这可以通过覆盖onSubmit 事件并使用this.validate() 验证登录表单来轻松完成。
为了成功登录,我如何知道onSubmit 事件何时完成,以便我可以安全地从 DOM 中删除登录表单?
从文档看来,dojo(验证?)可能会在从 onSubmit 返回(在我的情况下为 false)后继续引用 DOM 中的登录表单。有没有办法“监听”onSubmit 事件的完成,以便我可以安全地从 DOM 中删除登录表单?
编辑
@BuffaloBuffalo - 我尝试了您的示例并在 onSubmit this.validate() 中调用了 dojo.xhrPost。
onSucessFunction 在返回到 dojo.xhrPost 之后的语句之前接收控制并完成处理,这是 onSubmit 事件的返回 false。回顾一下,this.validate() 为真,登录表单由 dojo 验证,并且 onSuccessFunction 接收控制,如您的示例所示。但是,我实际上并没有隐藏登录 DOM,而是使用下面的 dojo 1.7.3 AMD 语法将其完全删除:
var loginDOMnode = dom.byId("Login");
array.forEach(registry.findWidgets(loginDOMnode), 'item.destroyRecursive(true)');
domConstruct.empty(loginDOMnode);
我使用的是 IE 9,但出现以下错误:
SCRIPT5007:无法获取属性“value”的值:对象是 null 或未定义 ValidationTextBox.js,第 14 行字符 1
由于我在从 DOM 中删除登录表单后从 onSubmit this.validate() 返回 false,看来我是在使用 ValidationTextBox 完成 dojo 之前将其从 DOM 中删除。在我从 onSubmit this.validate() 返回 false 后,有没有办法让 onSucessFunction 运行?
【问题讨论】:
标签: dojo