1

Тема: jQuery відслідковування кількох елементів

Я почав вивчати jQuery і зіткнувся з проблемою, я хочу динамічно відслідковувати елементи з певним і змінювати їх властивості, та поки не можу зрозуміти як це зробити

    <form id="calc">
        <input class="kv" type="text" id="a" pattern="\d*">
        <span>x2 + </span>
        <input class="kv" type="text" id="b" pattern="\d*">
        <span>x + </span>
        <input class="kv" type="text" id="c" pattern="\d*">
        <span> = 0</span>
    </form>

-------------------------------------------------------------------------
Тут змінюються конкретно всі елементи, а мені треба щоб змінювався тільки той який був редагований

<script>
        document.querySelector(".kv").onchange = function(){
            if(this.value.length>0){
                $(".kv").css({'border-color' : '#0dba2c'});
            }else{
                $(".kv").css({'border-color' : '#d13008'});
            }
        } 
</script>

Перечисляти всі елементи по id не варіант
Підкажіть як з максимально коротким і лаконічним кодом вирішити цю проблему
Якщо є якісь зауваження до мого гавнокоду будьласка покритикуйте

2

Re: jQuery відслідковування кількох елементів

Якщо ви вчитесь юзати jQuery то для чого тоді використовувати pure js?

$(document).on('input change','.kv',function(){
   var thisJQ=$(this);
   var color='#d13008';
   if(thisJQ.val().length>0){
      color='#0dba2c';
   }
   thisJQ.css({'border-color' : color});
});

ваша проблема в тому що потрібно змінювати стиль для текучого this, а не для всіх елементів на сторінці

(function(){
  console.log("called anonymously");
})()
Подякували: koala, shtyegor, 0xDADA11C73

3

Re: jQuery відслідковування кількох елементів

Рядок 4:

$(this).css({'border-color' : '#0dba2c'});

і т.д.

Подякували: shtyegor1

4

Re: jQuery відслідковування кількох елементів

Чому код працює тільки з першим елементом?

    <script>
        document.querySelector(".kv").onchange = function(){
            if(this.value.length>0){
                $(this).css({'border-color' : '#0dba2c'});
            }else{
                $(this).css({'border-color' : '#d13008'});
            }
        } 
    </script>

і чому код на jQuery вискакує помилка на 1 строці?
як це виправити?

5

Re: jQuery відслідковування кількох елементів

Чому код працює тільки з першим елементом?

Бо ви уживаєте document.querySelector, а ось для одержання переліку елементів існує хвункція document.querySelectorAll

Говорила баба діду: «Я поїду к Білодіду, Ізучу двомовну мову І вернусь обратно знову». А дід бабі: «Не *изди, К Білодіду нєт їзди, — Туди не ходять поїзди»
Подякували: 221VOLT, Сергій78, mike3