Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JavaScript]Dwa zdarzenia OnClick - problem
kotek2185
post 11.07.2012, 10:45:33
Post #1





Grupa: Zarejestrowani
Postów: 42
Pomógł: 0
Dołączył: 7.12.2011

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


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
Go to the top of the page
+Quote Post
CuteOne
post 11.07.2012, 16:40:01
Post #2





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


[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


Ten post edytował CuteOne 11.07.2012, 16:40:38
Go to the top of the page
+Quote Post
kamil4u
post 11.07.2012, 17:04:13
Post #3





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

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


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/


--------------------
Go to the top of the page
+Quote Post
kotek2185
post 11.07.2012, 18:25:26
Post #4





Grupa: Zarejestrowani
Postów: 42
Pomógł: 0
Dołączył: 7.12.2011

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


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);
?
Go to the top of the page
+Quote Post
kamil4u
post 11.07.2012, 19:29:12
Post #5





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

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


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 )" />


--------------------
Go to the top of the page
+Quote Post
kotek2185
post 11.07.2012, 21:14:05
Post #6





Grupa: Zarejestrowani
Postów: 42
Pomógł: 0
Dołączył: 7.12.2011

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


ok dzięki wielkie za pomoc udało się posklejać wskazówki i osiągnąć upragniony efekt:)

temat do zamknięcia
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: 18.07.2025 - 23:59