我正在开发一个简单的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,没有必要让它工作))
答案 0 :(得分:2)
preventDefault
将阻止浏览器执行默认操作(即:提交)。
this.loginForm.onSubmit = function(e){
e.preventDefault();
// Do Ajax calls etc.
// ..
}
有关详细信息,请参阅here。