Проверка для предотвращения дублирования значений во входном тексте - PullRequest
0 голосов
/ 07 февраля 2019

Я пытаюсь предотвратить дублирование значений на входах с тем же именем, когда я нажимаю кнопку отправки, но она не работает, и я не уверен, почему ... Мне нужна помощь, чтобы понять, почему не работает?Заранее большое спасибо!

это мой код:

Я пытался найти решение, которое нашел здесь, которое работало "при изменении ввода", но не с нажатием кнопки ... Мойкнопка:

<button type="button" id="approve" class="positive valid" tabindex="-1">Approve</button>

и мой jquery

$('#received').on('click',function() {
    var $current = $(this);
    if ($('input[name^="RE_SignedByID"]').val() == $current.val() && $('input[name^="RE_SignedByID"]').attr('tabindex') !== $current.attr('tabindex') ) {
    alert('You can not have duplicated ID´s');
       return false;                        
    }else {
       return true;
    }
});

Я хочу показать предупреждение и предотвратить отправку.Большое спасибо за любую помощь!

Ответы [ 2 ]

0 голосов
/ 14 февраля 2019

Я мог бы это исправить!Вот код ... вы можете добавить событие кнопки как:

$('#submit').on('click', function () { 


 var values = $('[name=RE_SignedByID]').map(function() {
                return this.value.trim();
                }).get(); 

                var values2= $('[name=RE_OwnersID]').map(function() {
                return this.value.trim();
                }).get(); 
                values.sort();
                values2.sort();
                for (var i = 0; i < values.length-1; i++) { 
                if( values[i] == values[i+1] && values[i] !=""){

                showAlert(translator.getTranslation(' You can not have duplicated signers ID\'s'));
                return false;
              //  break;
                }
                } 
                for (var i = 0; i < values2.length-1; i++) { 
                if( values2[i] == values2[i+1] && values2[i] !=""){

                showAlert(translator.getTranslation(' You can not have duplicated owners ID\'s'));
                return false;
              //  break;
                }
                }
 });
0 голосов
/ 07 февраля 2019

Проблема заключается в том, что вы сравниваете значение нажатой кнопки с первым input[name^="RE_SignedByID"] элементом.

Чтобы это исправить, вместо этого можно создать массив всех значений input[name^="RE_SignedByID"], используя map().Затем вы можете дедуплицировать этот список и сравнить полученную длину массива.Если они разные, был дубликат.Попробуйте это:

$('#received').on('click', function(e) {
  var values = $('input[name^="RE_SignedByID"]').map(function() {
    return this.value.trim();
  }).get();  
  var unique =  [...new Set(values)];

  if (values.length != unique.length) {
    e.preventDefault();
    alert('You can not have duplicated ID\'s');
  }
});

Обратите внимание, что [...new Set(values)] не будет работать в IE.Если вам нужно поддерживать устаревшие браузеры, существует множество альтернатив для дедупликации массива.См. этот ответ для получения дополнительной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...