AngularJS - 阻止提交无效的表单
AngularJS - Prevent submission of a form if it is invalid
我已经为我的问题创建了一个孤立案例:
http://plnkr.co/edit/6LXW5TG76LC9LNSrdpQC
这是孤立案例的代码:
<!DOCTYPE html>
<html ng-app="App">
<head></head>
<body ng-controller="ExampleController">
<form name="form" ng-submit="submit()" novalidate>
<input type="number" name="number" ng-model="number" required><br>
<span ng-show="form.number.$error.required && form.number.$touched">Required<br></span>
<span ng-show="form.number.$error.number">Not a number<br></span>
<input type="submit">
</form>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.9/angular.min.js"></script>
<script>
var App = angular.module('App', []);
App.controller('ExampleController', function($scope) {
$scope.submit = function() {
alert('send to server: ' + $scope.number);
}
});
App.run();
</script>
</body>
</html>
基本上,该示例包含一个数字字段,其下方是显示输入无效(为空或不是数字)时的错误消息。
但是表单仍然会提交,虽然字段值设置为 'undefined' 如果它无效,我更喜欢在发送到服务器之前检查表单是否有效的方法(本例中的警告框)。
所以我的问题是 - 在 AngularJS 中,有没有一种方法可以从控制器中检查表单是否有效?或者另一种防止表单无效时提交的方法?
http://plnkr.co/edit/kqLUJpjt0n0anJxzm6en?p=preview
你需要的是
if ($scope.form.$valid) {
//submit to server
}
其中 form
是表单名称
<form name="form"...
您可以尝试使用 ng-disabled 指令
<button type="submit" ng-disabled='number==null'>Submit</button>
这样你就可以避免添加额外的代码
最好将 ng-submit
表达式更改为
ng-submit="form.$valid && submit()"
最好使用 angular 指令表达式。
我已经为我的问题创建了一个孤立案例: http://plnkr.co/edit/6LXW5TG76LC9LNSrdpQC
这是孤立案例的代码:
<!DOCTYPE html>
<html ng-app="App">
<head></head>
<body ng-controller="ExampleController">
<form name="form" ng-submit="submit()" novalidate>
<input type="number" name="number" ng-model="number" required><br>
<span ng-show="form.number.$error.required && form.number.$touched">Required<br></span>
<span ng-show="form.number.$error.number">Not a number<br></span>
<input type="submit">
</form>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.9/angular.min.js"></script>
<script>
var App = angular.module('App', []);
App.controller('ExampleController', function($scope) {
$scope.submit = function() {
alert('send to server: ' + $scope.number);
}
});
App.run();
</script>
</body>
</html>
基本上,该示例包含一个数字字段,其下方是显示输入无效(为空或不是数字)时的错误消息。
但是表单仍然会提交,虽然字段值设置为 'undefined' 如果它无效,我更喜欢在发送到服务器之前检查表单是否有效的方法(本例中的警告框)。
所以我的问题是 - 在 AngularJS 中,有没有一种方法可以从控制器中检查表单是否有效?或者另一种防止表单无效时提交的方法?
http://plnkr.co/edit/kqLUJpjt0n0anJxzm6en?p=preview
你需要的是
if ($scope.form.$valid) {
//submit to server
}
其中 form
是表单名称
<form name="form"...
您可以尝试使用 ng-disabled 指令
<button type="submit" ng-disabled='number==null'>Submit</button>
这样你就可以避免添加额外的代码
最好将 ng-submit
表达式更改为
ng-submit="form.$valid && submit()"
最好使用 angular 指令表达式。