我有两个表单字段 - 员工人数和工资总额。
<div ng-repeat="payroll in report.payrolls">
<input type="number" min="0" class="input-mini" sister-value="{{payroll.grossPayrollAmount}}" ng-model="payroll.employeeCount" type="text">
<input ng-blur="payroll.grossPayrollAmount = Math.round(payroll.grossPayrollAmount)" type="number" min="0" class="input-small" ng-model="payroll.grossPayrollAmount" type="text">
</div>
用户不必为其中任何一个输入非零值。但是,如果他们为一个人输入一个非零值,那么他们必须为另一个人这样做,这就是我想要验证的。
这些字段在集合中重复 - 因此每个工资单都有一对,所以我不确定通过ID或类获取它们是否有效。
我以前写了一些自定义验证指令,但从来没有在另一个相关字段中检查一个值。
答案 0 :(得分:0)
您可以尝试围绕两个输入制作指令:
<directive>
<input type="number" min="0" ng-model="payroll.employeeCount" type="text">
<input ng-blur="payroll.grossPayrollAmount = Math.round(payroll.grossPayrollAmount)" type="number" min="0" class="input-small" ng-model="payroll.grossPayrollAmount" type="text">
</directive>
因此,两个值都可以从中获取,您可以使用element.find()来访问它们。
您使用element.find()就像使用jQuery一样。例如,设置id =&#34; employeeCount&#34;对于第一个输入,您可以使用element.find(&#39;#employeeCount&#39;)访问它,因此您获得第一个输入元素,最后使用element.find访问其值(&#39;#EMPLOYEECOUNT&#39)。VAL()。
注意:如果您不习惯使用jQuery,请记住在ID名称之前添加点(。)和在ID名称之前添加哈希(#)。
在这里,您有一个可用于任何元素的方法列表,包括&#34; find()&#34;:https://docs.angularjs.org/api/ng/function/angular.element
更新: 这也适用于多对输入,您只需重复指令标记,例如:
<directive>
<input [...] >
<input [...] >
</directive>
<directive>
<input [...] >
<input [...] >
</directive>
该指令将针对您创建的每个实例独立工作。