Итак, насколько я понимаю, вы не хотите, чтобы несколько полей имели одинаковое значение.Мой подход заключается в следующем:
let inputTimeout = null; //set an empty timeout object
let vars = [null, null, null, null]; // create an array containing as many nulls as you have inputs
$('.nameInput').on('keyup', function(){
let self = $(this);
clearTimeout(inputTimeout); //clear the timeout
inputTimeout = setTimeout(function(){ //set a timeout to check whether there is a dupe after the user has stopped typing
if (vars.indexOf(self.val()) == -1){ //check if the vals array contains the newly entered string
vars[self.attr('data-inputnum')] = self.val(); //insert the value into the array
}else{
//handle duplicates here
}
}, 500); //500ms is a sensible value for end of user input, change it if users complain that your app is too fast/slow
});
Затем вам просто нужно немного отредактировать свой HTML, чтобы все входные имена имели общий класс (я использовал .nameInput) и имели атрибут data-inputnum.Это выглядело бы примерно так:
<input type="text" name="RE_SignedByName" placeholder="name, person1" tabindex="102" class='nameInput' data-whichinput='0'/>
<input type="text" name="RE_SignedByName" placeholder="name, person2" tabindex="103" class='nameInput' data-whichinput='1'/>
<!--and so on-->
Конечно, никогда не полагайтесь только на одну проверку JavaScript, всегда проверяйте также и внутри своего бэкэнда.Однако это будет выходить за рамки этого ответа.