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;
 }

但是,如果在“返回 false”之前 Javascript 出现任何问题,则表单实际上已提交,这会导致错误(我的节点应用程序将返回Cannot POST /login,因为没有为该 URL 定义 POST 操作)。

我怎样才能 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 回答