我想爲我的應用程序登錄使用dijit.form.Form
,允許dojo執行表單驗證並使用xhrPost提交表單。我相信這可以通過覆蓋onSubmit
事件並使用this.validate()
來驗證登錄表單來完成。Dojo Form on提交事件
爲了成功登錄,我如何知道onSubmit
事件何時完成,以便我可以安全地從DOM刪除登錄表單?
從文檔中可以看出dojo(validate?)可能會在onSubmit返回(我的情況爲false)後繼續引用DOM中的登錄表單。有沒有辦法「偵聽」onSubmit事件來完成,所以我可以安全地從DOM中刪除登錄表單?
編輯
@BuffaloBuffalo - 我想你的榜樣和的onsubmit this.validate內調用dojo.xhrPost()。
onSucessFunction在返回dojo.xhrPost之後的語句之前收到控件並完成處理,這是onSubmit事件返回false。回顧一下,this.validate()爲true,登錄表單由dojo驗證,onSuccessFunction接收控件,如示例中所示。然而,而不是隱藏登錄DOM,其實我完全低於道場1.7.3 AMD語法刪除:
var loginDOMnode = dom.byId("Login");
array.forEach(registry.findWidgets(loginDOMnode), 'item.destroyRecursive(true)');
domConstruct.empty(loginDOMnode);
我使用的IE 9,我得到以下錯誤:
SCRIPT5007: Unable to get value of the property 'value': object is null or undefined ValidationTextBox.js, line 14 character 1
由於在我從DOM中刪除登錄表單之後,我從onSubmit this.validate()返回false,似乎我在dojo完成了ValidationTextBox之前將它從DOM中刪除。在onSubmit this.validate()返回false後,有沒有辦法讓onSucessFunction運行?
感謝您的及時回覆。請參閱上面的編輯。 – railser 2012-08-02 23:29:57
問題解決了!進一步審查後,我意識到我正在使用一個同步xhrPost,並應該使用異步xhrPost。我設置同步:錯誤,一切按預期工作。謝謝您的回覆。 – railser 2012-08-03 00:35:17