繁体   English   中英

AngularJS - 从表单验证/脏中排除字段

[英]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>

AngularJS应用程序

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM