0

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

<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 或班级获取它们是否有效。

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

4

1 回答 1

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="employeeCount" 设置为第一个输入,您可以使用 element.find('#employeeCount') 访问它,因此您会获得第一个输入元素,最后您可以使用 element.find(' 访问它的值#employeeCount').val()。

注意:如果您不习惯 jQuery,请记住在类名前添加点 (.),在 id 名称前添加井号 (#)。

在这里,您有一个可用于任何元素的方法列表,包括“find()”:https ://docs.angularjs.org/api/ng/function/angular.element


更新:这也适用于多对输入,您只需重复指令标记,例如:

<directive>
    <input [...] >

    <input [...] >
</directive>
<directive>
    <input [...] >

    <input [...] >
</directive>

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

于 2014-07-08T16:48:39.223 回答