我试图在AngularJS应用程序中以正常方式提交表单但我遇到了一个问题:似乎我必须指定action属性.
根据HTML规范(http://www.whatwg.org/specs/web-apps/current-work/multipage/association-of-controls-and-forms.html#form-submission-algorithm):
If action is the empty string,let action be the document’s address of
the form document.
但是,如果未填充action属性,AngularJS将拒绝提交表单.
我找到的解决方法是使用action =“#”,但这不是一个可接受的解决方案,因为我可能会使用哈希,我不希望它被重写.
有没有人遇到过这个问题?
编辑:我不想对这个表单使用angular,我只是想以“旧”的方式提交它
最佳答案
在库中,您可以看到Angular在没有操作的情况下侦听表单的事件提交:https://github.com/angular/angular.js/blob/b9fa5c5a6781f4e1ec337f27d55c69db491a6555/src/ng/directive/form.js#L331
几行之后,你可以看到Angular正在监听事件$destroy,可以删除此事件的动作.
因此,为了避免修改Angular,您只需触发表单的此事件:
angular.element(document).ready(function(){
angular.element(document.querySelector("#loginForm")).triggerHandler("$destroy");
});
上面几行描述了这种行为的原因:
we can’t use jq events because if a form is destroyed during submission the default action is not prevented.