一个AngularJS指令,用于在将非零和输入另一个时验证字段

时间:2014-07-08 16:39:22

标签: javascript angularjs validation angular-directive

我有两个表单字段 - 员工人数和工资总额。

<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">&nbsp;&nbsp;&nbsp;&nbsp;

    <input ng-blur="payroll.grossPayrollAmount = Math.round(payroll.grossPayrollAmount)" type="number" min="0" class="input-small"  ng-model="payroll.grossPayrollAmount" type="text">
</div>

用户不必为其中任何一个输入非零值。但是,如果他们为一个人输入一个非零值,那么他们必须为另一个人这样做,这就是我想要验证的。

这些字段在集合中重复 - 因此每个工资单都有一对,所以我不确定通过ID或类获取它们是否有效。

我以前写了一些自定义验证指令,但从来没有在另一个相关字段中检查一个值。

1 个答案:

答案 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>

该指令将针对您创建的每个实例独立工作。