0

従業員数と総給与額の 2 つのフォーム フィールドがあります。

<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() でそれらにアクセスできます。

jQuery と同じように element.find() を使用します。たとえば、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 に答える