Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zaznaczanie checkboxa po kliknięciu w wiersz tabeli - problem
ggie
post 24.11.2010, 20:39:00
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 17.11.2010

Ostrzeżenie: (0%)
-----


Witajcie,

Od dłuższego czasu męczę się i nie potrafię rozwiązać jednego problemu dot. w/w tematu. Może ktoś z Was podpowie mi metodę.

Otóż, tworzę za pomocą PHP tabelę i umieszczam wiersze z informacjami z bazy danych. W pierwszej kolumnie tabeli umieszczam chceckboxa, którego zaznaczam po kliknięciu na danym wierszu tabeli. W tym celu używam funkcji JS, którą wywołuję (onclick) w tagu <tr>.

Problem polega na tym, że wszystko działa OK dopóki nie kliknę na samego checkboxa - wówczas nie mogę go w ogóle zaznaczyć. Podejrzewam, że chodzi o podwójne wywołanie zdarzenia - jedno zaznacza checkboxa (moja funkcja JS) a drugie odznacza bo już został zaznaczony (działanie samego znacznika) - albo na odwrót.

Może ktoś zna sposób na rozwiązanie tego problemu?

Z góry dzięki za pomoc!

Nie dostałem odpowiedzi ale poradziłem sobie z tematem sam choć metoda jest baaardzo nieelegancka. Zastosowałem dodatkową funkcję w onclick na chceckbox'ie zmieniając jego stan jeszcze raz.

Pozdrawiam forumowiczów!
Temat zamknięty.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
kamil4u
post 24.11.2010, 21:01:49
Post #2





Grupa: Zarejestrowani
Postów: 2 350
Pomógł: 512
Dołączył: 4.01.2009
Skąd: Wrocław / Świdnica

Ostrzeżenie: (0%)
-----


Lepiej poczytaj o propagacji( stopPropagation ) i bubblingu( cancelBubble ). Kod:
Kod
<table>
<tbody id="test">
<tr><td><input type="checkbox"></td><td>test</td></tr>
<tr><td><input type="checkbox"></td><td>test</td></tr>
<tr><td><input type="checkbox"></td><td>test</td></tr>
<tr><td><input type="checkbox"></td><td>test</td></tr>
</tbody>
</table>

<script>
var trs,tr,el,i;
trs = document.getElementById('test').getElementsByTagName('tr');
for(i=0; tr=trs[i++];){
  
  el = tr.getElementsByTagName('input')[0];
  el.onclick = function(e){
    e=e||event;
    e.cancelBubble = true;
    e.stopPropagation && e.stopPropagation();
  }
  tr.onclick = function(el){
   return function(){ el.checked = !el.checked; }
}(el)
}
</script>


--------------------
Go to the top of the page
+Quote Post
ggie
post 30.11.2010, 20:08:36
Post #3





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 17.11.2010

Ostrzeżenie: (0%)
-----


Dzięki za podpowiedź - poczytam i popróbuję.

Pozdrawiam,
GGie
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 16:48