JSFiddle - React, Tailwind, and code Playground

by luislee818

HTML

<body ng-app="ap" ng-controller="con">
    <table>
        <tr>
            <td>name</td>
        </tr>
        <tr ng-repeat="person in persons">
            <td>
                <ng-form name="personForm">
                 <div ng-class="{ 'has-error' : 
                    personForm.personName.$invalid }">
                    <input type='number'
                    name="personName"
                    ng-init="person.form = personForm"
                    ng-class="empty"
                    ng-model="person.name"
                    ng-change="verifyDuplicate()"/>
                   </div>
                 </ng-form>
                <div class='error' 
                    ng-show=
                    'personForm.personName.$error.duplicate'>
                    Duplicate.
                </div>
            </td>
        </tr>
    </table> 
</body>

CSS

.empty{
    border-style: solid;
    border-color: rgba(255, 135, 66, 0.75);
    background-color: rgba(252, 102, 2, 0.54);
}

.normal{
    color: black;
}

JavaScript

var app = angular.module("ap",[]);

app.controller("con",function($scope){
    
    $scope.persons = [
        {name: 1},
        {name: 2},
        {name: 3}
    ];
    
    $scope.empty = "normal";
    
    $scope.verifyDuplicate = function() {
        var sorted, i, isDuplicate;
        sorted = $scope.persons.concat().sort(function (a, b) {
            if (a.name > b.name) return 1;
            if (a.name < b.name) return -1;
            return 0;
        });
        for(i = 0; i < $scope.persons.length; i++) {
            isDuplicate = ((sorted[i-1] && sorted[i-1].name == sorted[i].name) || (sorted[i+1] && sorted[i+1].name == sorted[i].name));
            sorted[i].form.personName.$setValidity('duplicate',!isDuplicate);
        }
    };
});