Witam, ciężko będzie mi wytłumaczyć mój problem, ale mam nadzieję, że ktoś mnie zrozumie. Mam taki układ:
var el = document.querySelectorAll('.propozycje'); // Tabele var input = document.querySelectorAll('.info'); // inputy, które znajdują się w środku tych tabel
Tabele maja różne data-nazwa, które posiadają różne wartości. Oczywiście mógłbym to zrobić na divach, ale akurat w tym przypadku bardziej pasowały mi tabele. Zrobiłem możliwość zaznaczania i odznaczania tych tabeli:
for (var i=0; i<el.length; i++){ el[i].addEventListener('click', function(e) { var val = parseInt(this.dataset.val); if(val === 0){ this.classList.add('propozycje-selected'); }else{ this.classList.add('propozycje-unselected');} }); }
Dodatkowo pushuję sobie dane z data-nazwa do tablicy obiektów.
Wszystko dobrze działało dopóki nie dodałem inputów, które mogą być wypełnione lub nie. Do tej samej pętli dodałem nowy listener i skorzystałem z zdarzenia blur.
input[i].addEventListener("blur", function(){ });
i przyznam, że się w tym wszystkim pogubiłem. Mam parę problemów: 1. Jeśli kliknę na jeden input, a potem od razu na drugi, to jednocześnie robi mi się nieskończona pętla 2. Jeśli kliknę najpierw na tabelę, a dopiero potem bedę chciał wpisać wartość, to obiekt będzie z wartością inputa NULL, ponieważ wartość została dopiero wpisana potem. Ewentualnie mógłbym jakoś edytować ostatni obiekt z tablicy? Może mógłbym jakoś zrobić jedno zdarzenie związane z tymi dwoma elementami? 4. Jeśli zaznaczę tabelę, a dopiero potem klikne na input żeby coś zaznaczyć, to zadziała mi na nowo zdarzenie z tabeli, więc input będzie aktywny, ale tabela się odznaczy.