Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript]Dwa zdarzenia OnClick - problem
Forum PHP.pl > Forum > Przedszkole
kotek2185
Witam, mam taki o to problem: mam listę checkboxów, generowaną z bazy mysql, dodałem ostatnio checkbox który ma za zadanie zaznaczania wszystkich checkboxów. Robię to za pomocą:

  1. <input type="checkbox" name="all" onclick="selectCheckboxes(this.form,'checkbox[',this.checked)"/>


i funkcję:

  1. <script type="text/javascript">
  2. function selectCheckboxes(what,pref,stan){
  3. for(i=0;i<what.elements.length;i++){
  4. if(what.elements[i].type == "checkbox" && what.elements[i].name.substring(0,pref.length) == pref){
  5. what.elements[i].checked=stan;
  6. }
  7. }
  8. }


(funkcja: użytkownika misterdexter // http://forum.php.pl/index.php?showtopic=53927 )

i to działa bez problemowo.

checkboxy zaznaczane przez checkbox o nazwie: all mają postać:

  1. <input name="checkbox[]" type="checkbox" id="checkbox[]" value="<?php echo $rows['id_osoby']; ?>"
  2. onClick="this.form.elements[\'delete\'].disabled = this.form.elements[\'edit\'].disabled = this.form.elements[\'szczegoly\'].disabled = !this.checked"/>


jak widać te checkboxy mają zdarzenie OnClick które sprawia że przyciski (edit, delete, szczegoly) w formie zmieniają się z /na disabled. I teraz w końcu pytanie jak dodać drugie zdarzenie OnClick w checkboksie "all" by jednocześnie zaznaczał wszystkie generowane checkboxy o nazwie: "checkbox[]" oraz sprawiał by przyciski zmieniały się z / na disabled?


Z góry dzięki za jakieś wskazówki
CuteOne
[JAVASCRIPT] pobierz, plaintext
  1. function funkcja_a() { alert('a'); }
  2. function funkcja_b() { alert('b'); }
  3. function clicked() {
  4.  
  5. funkcja_a();
  6. funkcja_b();
  7. }
  8. <input onclick="clicked()" />
[JAVASCRIPT] pobierz, plaintext
kamil4u
A najlepiej w ogóle nie używać do tego atrybutu HTML i zrobić to porządnie na metodach DOM-owskich: http://ejohn.org/projects/flexible-javascript-events/
kotek2185
próbowałem analogicznie, ale chyba coś źle wywołuje

  1.  
  2. <script type="text/javascript">
  3.  
  4. function selectCheckboxes(what,pref,stan){
  5. for(i=0;i<what.elements.length;i++){
  6. if(what.elements[i].type == "checkbox" && what.elements[i].name.substring(0,pref.length) == pref){
  7. what.elements[i].checked=stan;
  8. }
  9. }
  10. }
  11. function funkcja_b() { alert('b'); }
  12.  
  13. function clicked() {
  14.  
  15. funkcja_b();
  16. selectCheckboxes(this.form,'checkbox[',this.checked);
  17.  
  18. }
  19.  
  20. </script>
  21.  
  22. <input type="checkbox" name="all" onclick="clicked()"/><br><br>
  23. <input name="checkbox[]" type="checkbox" id="checkbox[]" /><br><br><br>
  24.  
  25. <input type="submit" name="delete" id="delete" disabled="disabled" value="usuń"/><br><br>
  26.  
  27. </form>
  28.  


Funkje_b na ładnie pokazuje zreszta jak w przykładzie CuteOne, ale czemu juz nie zaznacza? Czyżbym źle wywoływał funkje:
  1. selectCheckboxes(this.form,'checkbox[',this.checked);
?
kamil4u
Bo musisz jeszcze przekazać this przez atrybut( i pozamieniać this na coś innego ):
Kod
function funkcja_a( el ) { alert(el+" 1"); }
function funkcja_b( el ) { alert(el+" 2"); }
function clicked( el ) {

     funkcja_a( el );
     funkcja_b( el );
}
<input onclick="clicked( this )" />
kotek2185
ok dzięki wielkie za pomoc udało się posklejać wskazówki i osiągnąć upragniony efekt:)

temat do zamknięcia
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.