Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Проверка совпадения полей на Jquery (https://javascript.ru/forum/jquery/72608-proverka-sovpadeniya-polejj-na-jquery.html)

AlexSergeev1990 12.02.2018 11:28

Проверка совпадения полей на Jquery
 
Всем привет!! Не додумался как сделать проверку полей.
Например у меня есть три поля
<input type='text' name='tovar'/>
<input type='text' name='tovar'/>
<input type='text' name='tovar'/>
надо чтобы скрипт проверял на одинаковые значения
по мере вбивания. Т.е вбили в первое в поле, перешли на второе
если во втором поле вбивается то же значение, то сразу же подсветить 2 поле красным, если же вбивается в третье поле повторяющееся значение из какого либо вбитого поля, то она должна подкраситься красным цветом.
Если есть аналогичные решения дайте ссылку плиз... Спасибо!!
Кто поможет на телефон 100 рублей, пишите в личку Ваш номер!
И да полей м.б не ограничено до 7 точно...

рони 12.02.2018 11:53

AlexSergeev1990,
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  .err {
    border: 4px red solid;
  }
  </style>

  <script>
window.addEventListener("DOMContentLoaded", function() {
  var tovar = [].slice.call(document.querySelectorAll('[name="tovar"]'), 0);
  tovar.forEach(function(item, i) {
    item.addEventListener("input", function() {
      var val = this.value.trim(), err = val && tovar.some(function(el, k) {
        el = el.value.trim();
        return k != i && el && el == val;
      });
      err ? item.classList.add("err") : item.classList.remove("err");
    });
  });
});
  </script>
</head>

<body>
 <input type='text' name='tovar'/>
 <input type='text' name='tovar'/>
 <input type='text' name='tovar'/>
</body>
</html>

Nexus 12.02.2018 11:58

Задавать нескольким input одно имя - неправильно (если это не массив).

Upd. Используя jq: https://jsfiddle.net/8120x4sy/

laimas 12.02.2018 13:14

Nexus,
можно, если на сервере не РНР или он, но сами разбираем сырые данные, а не используем готовый массив.

Nexus 12.02.2018 13:21

laimas, я не писал, что нельзя. С дуру можно многое.
Браузер отправит данные только 1 из этих полей, если не юзать js.

laimas 12.02.2018 13:25

Цитата:

Сообщение от Nexus
Браузер отправит данные только 1 из этих полей.

Нет, браузер все поля отправит, но если при этом получать из $_GET/$_POST, то в них будет только последнее поле.

Nexus 12.02.2018 13:33

Цитата:

Сообщение от laimas (Сообщение 477811)
Нет, браузер все поля отправит, но если при этом получать из $_GET/$_POST, то в них будет только последнее поле.

Действительно, я ошибся.


Часовой пояс GMT +3, время: 09:15.