[英]AngularJS - exclude field from form validation / dirty
我有一个由HTML5 form
ng-form
敲击的ng-form
内的checkbox
,我想要排除,所以它不会改变我的表单$state
( $pristine
或$dirty
)。
我尝试过使用ignoreDirty
指令 - Angular 1.2:是否可以在表单脏检查中排除输入?
和其他一些解决方案,并没有适用于HTML5 form
内的ng-form
HTML5 form
,一些示例代码:
<form name="mainForm" class="col-xs-10 form-validation" novalidate>
<ng-form name="innerForm">
<div>
<span>check my
<span ng-if="vm.utils.mode!=='readonly'">
<input type="checkbox"
ng-model="vm.utils.amalotSecond"
class="secondYearCheckBox">
</span>
</span>
</div>
</ng-form>
<form>
你提供的ignoreDirty
指令在这个演示小提琴中运行得很好。 下面的代码示例取自angular-1-2-is-it-possible-to-exclude-an-input-on-form-dirty-checking 。 还要尽量避免使用不符合HTML的嵌套表单。 form
元素不能具有元素form
。 它会导致问题和错误,例如您当前面临的问题和错误。
<div ng-controller="MyCtrl">
<form name="test">
Watching dirty: <input ng-model="name" /><br />
Ignoring dirty: <select ng-model="gender" ignore-dirty>
<option>male</option>
<option>female</option>
</select><br />
dirty: {{test.$dirty}}
</form>
</div>
var myApp = angular.module('myApp',[]);
myApp.controller('MyCtrl', function ($scope) {
$scope.name = 'Superhero';
});
myApp.directive('ignoreDirty', [function() {
return {
restrict: 'A',
require: 'ngModel',
link: function(scope, elm, attrs, ctrl) {
ctrl.$setPristine = function() {};
ctrl.$pristine = false;
}
}
}]);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.