我有一个输入字段和一个按钮,用户可以在其中输入要进行地理定位的地址。这是更大表单的一部分,但是我希望当他们按下“映射它”按钮而不是提交最终表单时,能够处理该字段的有效性。如何将此字段设置为无效?调用会$setValidity
导致未定义/不是函数错误。
表格位:
<form name="myForm">
<input type="text" name="addy" ng-model="addy">
<a ng-click="geoCode()">Map it!</a>
<span class="error" ng-hide="myForm.addy.$invalid">Bad field</span>
....
</form>
控制器:
$scope.addy = null
// This is a more complex async function trimmed down to essentials
$scope.geoCode = function() {
$scope.addy.$setValidity('unique', false);
});
我也希望该字段仅被检查一次。因此,如果他们输入地址并且不按Map it按钮,那么将在提交时对其进行检查,但是如果他们按Map按钮并且字段有效,则它将不再通过异步功能运行。有关如何最好地处理此问题的建议?
如果您想validity
在控制器中设置输入字段的,您可以简单地传递表单并访问您的输入,就像在标记中一样。我还提供了一个工作示例:
var app = angular.module('form-example', []);
app.controller('FormCtrl', function($scope) {
var vm = this;
vm.geoCode = function(form) {
form.addy.$setValidity('unique', false);
};
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js"></script>
<form ng-app="form-example" name="myForm" ng-controller="FormCtrl as vm">
<input type="text" name="addy" ng-model="vm.addy">
<a ng-click="vm.geoCode(myForm)">Map it!</a>
<span class="error" ng-hide="myForm.addy.$invalid">Bad field</span>
</form>
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句