AngularJS - 不基于表单元素的验证

时间:2017-07-14 17:49:57

标签: angularjs validation

有没有办法注入一些验证 - 自定义或其他 - 与表单元素无关?喜欢 - 验证是否满足某些条件,但它是否适用于标准的AngularJS验证?

更新

这就是我想要完成的事情:

我有一个包含部分列表的表单。每个部分都由一个复选框控制,当选中复选框时,该部分将显示(通过ng-if)。

在每个部分中,都有机会通过按钮点击激活的弹出模式选择项目。在为该部分选择项目之前,表单必须无效。为每个选中的选项选择项后,表单必须有效。

我在表单底部有一个按钮,其中ng-disabled =“frm。$ invalid”。我希望它保持禁用状态,直到每个已检查的部分包含通过模态选择的项目。

更新2:

以下是一些示例代码:

<form class="form-horizontal" role="form" name="frm" novalidate>
  <label>Name: </label>
  <input type="text" ng-model="name" required/>

  <div ng-repeat="orderItem in orderItems">
    <input type="checkbox" name="items[]" ng-model="orderItem.selected"/>
    <div ng-if="orderItem.selected">
      ... bunch of form fields
      <button ng-click="openExchangeSelectionModal(orderItem)">Select Item</button>
      <div ng-show="orderItem.exchange_item">
        Selected Item: {{orderItem.exchange_item.name}} - ${{orderItem.exchange_item.price | number: 2}}
      </div>
    </div>
  </div>

  <button ng-disabled="frm.$invalid" ng-click="submitOrder">Submit</button>
</form>

1 个答案:

答案 0 :(得分:0)

在这种情况下,检查表格是否有效对您没有帮助,因为没有必要的输入未被填写。
我建议的是,禁用按钮会调用一个函数,该函数会对扩展的复选框数量和所选项目的数量做出一些逻辑,并返回按钮状态(如果为活动则为true,否则为false)

我们来看一下您提供的示例代码:

//some html tags...

  <button ng-disabled="checkValid()" ng-click="submitOrder">Submit</button>
</form>

请注意,我将frm。$ invalid更改为checkValid函数,这是一个在控制器上定义的函数,可以执行您想要确定的任何逻辑,而不是显示您的提交按钮。