Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Przerobienie funkcji - dodatkowy argument funkcji
3miel
post
Post #1





Grupa: Zarejestrowani
Postów: 203
Pomógł: 0
Dołączył: 10.06.2004
Skąd: Gliwice

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


Witam,
potrzebuje waszej pomocy, bo miałem zfobioną funkcję do zaznaczania wszystkich checkboxó i w zależnosci od tgo nie które submity miały być aktywne lub nie:
Kod
function selectAll(x,b) {
   if (typeof(x)=='string')x=document.getElementById(x);
   else { while(x=x.parentNode) { if (x.nodeName.toLowerCase()=='form')break;} }
   var ins=x.getElementsByTagName("input");
   for(j=0;j<ins.length;j++) { if(ins[j].type.toLowerCase()=="checkbox") { ins[j].checked=b;
   document.ble.edytuj.disabled=!b;
   document.ble.usun.disabled=!b;
   document.ble.pokaz.disabled=!b;
   document.ble.ukryj.disabled=!b;
} } }

onload=function(i,x,t){with(document.ble){
edytuj.disabled=true;
usun.disabled=true;
pokaz.disabled=true;
ukryj.disabled=true;
for(i=0;t=elements['opcja[]'][i++];){t.onchange=function(){sprawdz();}}
}}

function sprawdz(t,i,s){with(document.ble){
for(i=0,s=!0;t=elements['opcja[]'][i++];){if(t.checked){s=0;break;}}
edytuj.disabled=s;
usun.disabled=s;
pokaz.disabled=s;
ukryj.disabled=s;
}}


i wywołuje to w ten sposób:
  1. <? 
  2. echo '<form name="ble" action="panel.php" method="post">'; 
  3. // ... 
  4. echo '<input type="checkbox" name="opcja[]" value="'.$wers['id'].'" onchange="sprawdz()" id="'.$wers['id'].'">'; 
  5. //... 
  6. echo '<input type="button" onClick="selectAll(this,true)" value=" All "><input type="button" onClick="selectAll(this)" value="Null"> 
  7.  
  8. <input type="submit" name="edytuj" value=" "> 
  9. <input type="submit" name="usun" value=" ">'; 
  10. ?> 

I musze to przerobić, żeby zamiast "BLE" była nazwa zmiennej podanej na poczatku skrpytu(czyli nazwa formularza). Tylko Jak to wszystko pogodzić w JS, tzn jak dodac do funkcji kolejną zmienną i zastąpić wszystkie ble zmiennymi? Nie znam się na JS dlatego prszę was o pomoc!


--------------------
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
LBO
post
Post #2





Grupa: Zarejestrowani
Postów: 1 415
Pomógł: 117
Dołączył: 7.09.2005
Skąd: Warszawa

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


Kod
zmienna = "BLE";
//code
document.getElementByName(zmienna).edytuj.disabled=!b; //itd
//code
Go to the top of the page
+Quote Post
3miel
post
Post #3





Grupa: Zarejestrowani
Postów: 203
Pomógł: 0
Dołączył: 10.06.2004
Skąd: Gliwice

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


możesz spróbowac zrobić pierwszy przykład bo coś mi nie wychodzi:/ Jak bede to widział to może zrozumiem.


--------------------
Go to the top of the page
+Quote Post
LBO
post
Post #4





Grupa: Zarejestrowani
Postów: 1 415
Pomógł: 117
Dołączył: 7.09.2005
Skąd: Warszawa

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


pierwsza funkcja...
Kod
function selectAll(formName, x,b) {
  if (typeof(x)=='string') {
    x=document.getElementById(x);
  } else {
    while(x=x.parentNode) {
      if (x.nodeName.toLowerCase()=='form') {
        break;
      }
    }
  }
  var ins = x.getElementsByTagName("input");
  for(j=0;j<ins.length;j++) {
    if(ins[j].type.toLowerCase()=="checkbox") {
      ins[j].checked=b;
      document.getElementByName(formName).edytuj.disabled=!b;
      document.getElementByName(formName).usun.disabled=!b;
      document.getElementByName(formName).pokaz.disabled=!b;
      document.getElementByName(formName).ukryj.disabled=!b;
    }
  }
}
Go to the top of the page
+Quote Post
3miel
post
Post #5





Grupa: Zarejestrowani
Postów: 203
Pomógł: 0
Dołączył: 10.06.2004
Skąd: Gliwice

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


nie chce działać:/:
Kod
<form name="Marki" action="panel.php" method="post">
<input type="button" onClick="selectAll(Marki,this,true)" value=" All ">

Próbowałem tak wcześniej ale myślałem że źle robie, a tu jednak musi być wina czegoś innego:(


--------------------
Go to the top of the page
+Quote Post
jpluzek
post
Post #6





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 12.01.2006
Skąd: Opole

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


To jest nazwa formularza, którą przekazujesz do funkcji więc musi byc w apostrofach lub cudzysłowiach, bez tego nie ma prawa działac.

Kod
<form name="Marki" action="panel.php" method="post">
<input type="button" onClick="selectAll('Marki',this,true)" value=" All ">


Poza tym pytanie jakiej przeglądarki używasz. Firefox ma bardzo dobre raportowanie błędów w javascripcie, dlatego go polecam - zresztą polecam go również z wielu innych względów winksmiley.jpg. Kiedy wystąpi błąd w skrypcie wtedy wskaże ci nie tylko prawidłową linijkę ale i miejsce w linijce w którym wystąpił błąd. Nie to co badzIEwie, gdzie baaaardzo trudno sie często domyślic gdzie dokładnie jest błąd...

Ten post edytował jpluzek 3.02.2006, 15:31:24


--------------------
Nigdy nie dyskutuj z kretynem. Najpierw sprowadzi Cię do swojego poziomu, a potem pokona doświadczeniem...
Go to the top of the page
+Quote Post
3miel
post
Post #7





Grupa: Zarejestrowani
Postów: 203
Pomógł: 0
Dołączył: 10.06.2004
Skąd: Gliwice

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


Zrobiłem tak jak radziłeś i dalej to samo:( Zaznacza tylko i wyłącznie 1 checkbox, a jest ich w sumie kilkanaście :/.
Firefoxem nie zgłasza żadnych błędów.
Gdize jest błąd?

-------------------------------------------
Postaowiłem wszystko cofnąc do pierowtnej postaci. Działało.
Następnie zmieniłem zamiast ble dałem getElementByName(formName) i na początku tej funkcji formName = 'ble'; i ku mojemu zdziwieniu nie działa. Więc wniosek prosty: getElementByName(formName) trzba zastąpić czymś innym... tylko czym?questionmark.gif

-------------------------------------------
Doszedłem do wniosku, żę tak naprawdę ten kod z tym zmieniamiem nie jest do zanzaczania/odznaczania pól! To kawałek wczesniej:
Kod
if (typeof(x)=='string') {
   x=document.getElementById(x);
} else {
   while(x=x.parentNode) {
     if (x.nodeName.toLowerCase()=='form') {
       break;
     }
   }
}
to jest prawdziwy kod odpowiedni za to! Jak ko zmienić, żeby był do okresleno formularza? BO mam na stronie 2 formularze i się sypie :/

Ten post edytował 3miel 3.02.2006, 22:19:25


--------------------
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 Aktualny czas: 19.08.2025 - 21:56