我正在开发一个简单的 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,那么让它工作毫无意义))