0

簡単なDojoアプリケーションを開発しています。フォームに少し問題があります。私はこのようなフォームを持っています:

<form data-dojo-type="dijit.form.Form" data-dojo-attach-point="loginForm" method="POST">
      <label for="${id}_login">Login</label>
      <input name="login" id="${id}_login" data-dojo-attach-point="login" data-dojo-type="dijit.form.ValidationTextBox" data-dojo-props="required:true"/>
      <label for="${id}_password">Password</label>
      <input name="password" id="${id}_password0" data-dojo-attach-point="password" data-dojo-type="app.ValidationPassword" />
      <input type="submit" data-dojo-attach-point="loginButton" data-dojo-type="app.BusyButton" label="Login!" />
</form>

私が持っているアプリでは:

 this.loginForm.onSubmit = function(e){

   // Do Ajax calls etc.
   // ..

   // Prevents actual submission
   return false;
 }

ただし、「return false」の前にJavascriptに問題が発生した場合、フォームは実際に送信され、エラーが発生します(そのURLにPOSTアクションが定義されていないため、ノードアプリが返されます)Cannot POST /login

どのような場合でもフォームが送信されないことを1000%確認するにはどうすればよいですか?私はAjaxですべてを行うので、タグを完全に取り除くことができることを知っていますが、...それではdata = that.loginForm.getValues();、たとえば、うまくいきません。(つまり、結局のところフォームです)

(注:JavaScript以外のダウングレードには興味がありません。このアプリは1ページのajaxアプリであり、ユーザーがAJAXを持っていない場合に機能させる意味はありません))

4

1 に答える 1

2

preventDefaultブラウザがデフォルトのアクション(つまり、送信)を実行するのを停止します。

this.loginForm.onSubmit = function(e){
  e.preventDefault();

  // Do Ajax calls etc.
  // ..
}

詳細については、こちらをご覧ください。

于 2012-08-11T04:55:37.583 に答える