我实际上正在使用AngularJS(1.5.11)开发Cordova应用程序。我面临着一个非常奇怪的iOS错误,我不会使用Android(相同的代码)。
我从表单中删除了所有不需要的信息以重现错误(类,指令,额外的div ...),但错误仍然存在:(
以下是表格:
<form method="post" ng-submit="$ctrl.login()">
<input type="email" name="username" value="" required ng-model="$ctrl.username">
<input type="password" name="password" value="" required ng-model="$ctrl.password">
<button type="submit">Submit</button>
</form>
我的表单即使无效也会提交。它是一个基本的登录表单,包含两个字段(登录名,密码)和一个按钮。
仅供参考,我的应用中的每个表单都会受到此错误的影响。
我错过了什么吗? 谢谢你的帮助:)
答案 0 :(得分:1)
您有3个选项
1.-如果表单无效,请禁用提交按钮:
<form name="needNameForm" method="post" ng-submit="$ctrl.login()">
...
<button type="submit" ng-disabled="needNameForm.$invalid">Submit</button>
</form>
2.-如果表格无效,请忽略提交:
<form name="needNameForm" method="post"
ng-submit="needNameForm.$valid && $ctrl.login()">
...
</form>
3.-检查提交方法的有效性:
<form name="needNameForm" method="post"
ng-submit="$ctrl.login(needNameForm)">
...
</form>
<!-- for testing purposes you can use this line below -->
<pre>{{needNameForm | json}}</pre>
在您的控制器中:
angular.controller('name', function(){
var vm = this;
vm.login = function(formController){
if(formController.$valid){
doStuff();
}
}
}
使用第3个选项,如果要验证表单中的每个输入,您将拥有更多控制权, formController 对象将包含每个输入的所有信息,并且您还需要添加名称输入以便您可以获得有关它们的完整信息,以下是有关它的所有信息:https://docs.angularjs.org/api/ng/type/form.FormController