1

アプリケーションのログインにを使用し、dijit.form.Formdojoがフォームの検証を実行できるようにし、xhrPostを使用してフォームを送信したいと思います。onSubmitこれは、イベントthis.validate()をオーバーライドし、ログインフォームの検証に使用することで簡単に実行できると思います。

ログインを成功させるには、onSubmitイベントがいつ完了したかを確認して、DOMからログインフォームを安全に削除できるようにするにはどうすればよいですか?

ドキュメントから、dojo(validate?)は、onSubmitから戻った後(私の場合はfalse)、DOMのログインフォームを参照し続ける可能性があるようです。ログインフォームをDOMから安全に削除できるように、onSubmitイベントが完了するのを「リッスン」する方法はありますか?

編集

@BuffaloBuffalo-私はあなたの例を試し、onSubmit this.validate()内でdojo.xhrPostを呼び出しました。

onSucessFunctionは、onSubmitイベントからfalseを返すdojo.xhrPostの後のステートメントに戻る前に、制御を受け取り、処理を完了しました。要約すると、this.validate()はtrueであり、ログインフォームはdojoによって検証され、onSuccessFunctionは例に示すように制御を受け取りました。ただし、ログインDOMを非表示にするのではなく、実際には以下のdojo1.7.3AMD構文を使用して完全に削除します。

   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を実行する方法はありますか?

4

1 に答える 1

1

ajax(xhrPostなど)を使用してログインプロセスを送信する場合は、その非同期イベントの戻りをリッスンする必要があります。カスタムフォームの場合:

onSubmit:function(e){
    //stop event
    dojo.stopEvent(e);
    //validate your form
    var onSucessFunction = function(){
        //hide login dom
    };
    var onErrorFunction = function(){
        //show an error
    };
    dojo.xhrPost({
        //parameters
    }).then(onSucessFunction,onErrorFunction);

}、

于 2012-08-02T19:18:12.323 に答える