Javascript 角度验证中禁用ng未按预期工作

Javascript 角度验证中禁用ng未按预期工作,javascript,angularjs,angularjs-validation,Javascript,Angularjs,Angularjs Validation,我试了又试,想让它发挥作用,但我没有运气。我正在尝试使用angularJS和内置的验证功能禁用submit按钮。我发现,当您第一次加载表单时,submit按钮是活动的,而不是禁用的 我已经测试并尝试过,我发现我的验证代码接受团队名称中的空字符串/空字符串,尽管我需要输入 有人知道如何正确格式化吗?我让它工作的唯一方法是用一个空格替换一个空字符串来伪造数据…在生产中这是不可接受的 以下是index.html: <body ng-controller="EnterController as e

我试了又试,想让它发挥作用,但我没有运气。我正在尝试使用angularJS和内置的验证功能禁用submit按钮。我发现,当您第一次加载表单时,submit按钮是活动的,而不是禁用的

我已经测试并尝试过,我发现我的验证代码接受团队名称中的空字符串/空字符串,尽管我需要输入

有人知道如何正确格式化吗?我让它工作的唯一方法是用一个空格替换一个空字符串来伪造数据…在生产中这是不可接受的

以下是index.html:

<body ng-controller="EnterController as enter">
  <div class="panel panel-primary">
    <div class="panel-body">
      <form name="enterFormNew" ng-submit="enter.TeamNameNext()" autocomplete="off" novalidate>
        <div class="row">
          <div class="col-xs-8 col-md-6">
            <div class="form-group">
              <label for="teamname">Team Name</label>
              <input name="TeamName" ng-required ng-minlength="2" ng-maxlength="40" ng-model="enter.Team.Name" type="text" id="teamname" class="form-control" />
              <p ng-show="enterFormNew.TeamName.$touched && enterFormNew.TeamName.$invalid">This is not a valid team name.</p>
            </div>
            <div class="form-group">
              <label for="division">Division</label>
              <select name="selectDivision" ng-required ng-model="enter.Team.Division" id="division" class="form-control" ng-options="division.Name for division in enter.Divisions track by division.Id ">
                <option value="">Select...</option>
              </select>
              <p ng-show="enterFormNew.selectDivision.$touched && enterFormNew.selectDivision.$invalid">A valid Division needs to be selected.</p>
            </div>
          </div>
        </div>
        <div class="row">
          <div class="col-xs-2">
            <button type="submit" class="btn btn-primary" ng-disabled="enterFormNew.$invalid">Next</button>
          </div>
        </div>
      </form>
    </div>
  </div>
</body>

属性
ng required
需要一个值。不要与不需要值的HTML5属性
required
混淆

ng-required="true"
因为“Team.Division”在控制器代码中不是未定义的

如果您可以使用下面的代码,您将获得您所扩展的内容

this.Team = { Name: "", ResumeKey: null, Division: undefined, Players: []};

您可以使用null或“”来代替未定义。

很好!我已经更新了plunker,它可以与输入[text]一起工作,但这不适用于select语句。想法?您正在按Division.Id跟踪选择选项,当选择选项为空时,Division.Id将解释为“-1”。因此,始终为除法设置一个值。我已经帮你解决了问题:如果你的问题已经解决,就接受答案。干杯
this.Team = { Name: "", ResumeKey: null, Division: undefined, Players: []};