Javascript angularjs表单按钮未验证或启用

Javascript angularjs表单按钮未验证或启用,javascript,angularjs,Javascript,Angularjs,我有一个angularjs表单,它从范围中提取默认数据。使用默认数据,表单将被验证,从而启用按钮进行提交,但情况正好相反,除非在输入字段中输入数据,这将启用按钮。下面是片段 <div ng-controller="FormValidationController as frmValidationController" class="ui basic segment"> <form class="ui form" name="frmValidation" novalidat

我有一个angularjs表单,它从范围中提取默认数据。使用默认数据,表单将被验证,从而启用按钮进行提交,但情况正好相反,除非在输入字段中输入数据,这将启用按钮。下面是片段

<div ng-controller="FormValidationController as frmValidationController" class="ui basic segment">

  <form class="ui form" name="frmValidation" novalidate>    
      <div ng-class = "{'has-error':frmValidation.option1.$invalid && !frmValidation.option1.$pristine}"
           class="required field">
          <label>Selection</label>
          <input ng-model="option" ng-minlength="3" formcontrol
                 name="option1" placeholder="Option" type="text"
                 class="ng-dirty ng-valid ng-touched" required>
           <div _ngcontent-c5="" ngxerrors="option1">
               <div class="input-error-message" ngxerror="validName" hidden="">
                    selection should be there
                </div>               
          </div>
          <p ng-show = "frmValidation.option1.$invalid && !frmValidation.option1.$pristine"
             class = "input-error-message">required</p>
      </div>

挑选
选择应该在那里

必需

如果模型有数据,按钮应该在启动时启用,但这永远不会发生,我希望它发生

<button ng-click="submit(); frmValidationController.submitForm(frmValidation.$valid)"
    ng-disabled ="!frmValidation.$dirty || frmValidation.$invalid"
    class="ui primary button" tabindex="0" type="submit">
  Proceed
</button>

继续
问题在于:

ng-disabled ="!frmValidation.$dirty || frmValidation.$invalid"
具体而言:

!frmValidation.$dirty
只有当实际用户与表单交互时,表单才是脏的。因为您正在加载默认数据,所以表单填写正确,但用户没有触摸或“弄脏”它


删除该复选框,我相信它会像预期的那样工作。

分而治之。当您有少量代码,但问题的来源完全不清楚时,请开始一次删除一点代码,直到问题消失。对可能出现的问题没有深入了解设置
class=“ng dirty”
不会将
$dirty
状态设置为
true
ngModelController
忽略类设置。设置
class=“ng valid”
不会将
$valid
状态设置为
true
ngModelController
忽略类设置。所以我应该只使用这个>>!frmValidation.$dirty在formIt中看起来不需要使用
!frmValidation.$dirty
。您应该只将
frmValidation.$invalid
绑定到ng=disabled。