ugrás a tartalomhoz

checkbox állapotától függő css class IE

mhn · 2009. Jún. 3. (Sze), 16.18
sziasztok!

csinálok egy regisztrációs form-ot (Drupal 5, formAPI)
alapesetben keresztnév, email + 2 checkbox van a form-ban.
http://www.mhn.hu/drupal/form
az egyik (Nem magánszemélyként regisztrálok) checkbox-ra kattintva megjelenik még két textfield (vezetéknév, lakcím)

az eltüntetést úgy oldottam meg, hogy a 2 befoglaló <div> kap egy private/notprivate class-t, ahol a notprivate class display: none formában van kilőve

ez jól működik FF3, Opera 10, Chrome2 böngészőkben.
viszont IE-ben, az első kattintásra kiveszi a pipát a négyzetből és még1x kattintani kell, hogy megjelenjen vagy épp eltünjön a 2 új textfield

van vkinek ötlete, h mi lehet a gond?
előre is köszönöm!

js kód:
  1. if(Drupal.jsEnabled){  
  2.   $(document).ready(reg_form_init);  
  3. }  
  4.   
  5. function reg_form_init(){  
  6.   var element = document.getElementById('familyname');  
  7.   var element2= document.getElementById('address');  
  8.   var checkbox = document.getElementById('edit-private-private');  
  9.     
  10.   if (checkbox.checked) {  
  11.        c = 'notprivate';  
  12.   } else {  
  13.     c = 'private';  
  14.   }  
  15.   element.className = c;  
  16.   element2.className = c;  
  17.     
  18.   $('#edit-private-private').change(function(){  
  19.             
  20.     if (checkbox.checked) {  
  21.       c = 'notprivate';  
  22.     } else {  
  23.       c = 'private';  
  24.     }  
  25.         
  26.     element.className = c;  
  27.     element2.className = c;  
  28.   
  29.    });  
  30. }  
 
1

tipp

eashlon · 2009. Jún. 3. (Sze), 16.59
Alapvetően mégcsak ismerkedek a JS-el, de én itt kezdeném:
viszont IE-ben, az első kattintásra kiveszi a pipát a négyzetből és még1x kattintani kell, hogy megjelenjen vagy épp eltűnjön a 2 új textfield

Azaz akkor pontosítsunk: van a két checkbox, ami(k)nek ugye van "default" értéke, és ennek állítása valahol.
Valószínű, ha FF, és Chrome alapból üresen hagyja mindkettőt - ami a "default" értéknek felel meg - akkor valami IE bug lehet az oka. Esetlegesen próbáld meg valahol nyomatékosítani, h az alapértékük 0.
Javaslom guglizz "ie checkbox default bug drupal" irányokban és talán találsz valamit :)

De mint említettem ez csak gondolatébresztő tipp
3

Sztem azzal lehet a baj hogy

mgergo90 · 2009. Jún. 3. (Sze), 17.04
Sztem azzal lehet a baj hogy rossz eseményhez rendelte hozzá a függvényt
Ha nem tévedek onchange-hez van kötve, így csak akkor fut le a függvény ha a másik elemre kattintasz, ezt úgy lehet orvosolni, hogy onclick eseményhez rendeled a függvényt.
Remélem jól gondolom és tényleg ez a hiba, ha mégsem akkor használd az én megoldásom.
4

ie bug

gex · 2009. Jún. 3. (Sze), 17.30
Ha nem tévedek onchange-hez van kötve, így csak akkor fut le a függvény ha a másik elemre kattintasz, ezt úgy lehet orvosolni, hogy onclick eseményhez rendeled a függvényt.
igen ez egy ie bug/félreértelmezés. csak akkor következik be az onchange esemény ha az elem elveszíti a fókuszt. minden normális böngészőben kiválóan működik.
2

Nem ismerem a Drupal-t de én

mgergo90 · 2009. Jún. 3. (Sze), 16.59
Nem ismerem a Drupal-t de én így oldanám meg:
  1. <html>  
  2. <head>  
  3. <script>  
  4. function check_it() {  
  5.     var show  = document.getElementById('show');  
  6.     var jelolo   = document.getElementById('jelolo');  
  7.     if (jelolo.checked) {  
  8.         show.style.display = 'block';  
  9.     }  
  10.     else {  
  11.         show.style.display = 'none';  
  12.     }     
  13. }  
  14. </script>  
  15. </head>  
  16. <body>  
  17. <form>  
  18.     <div id="show">  
  19.     <input type="text" id="input_1"><br>  
  20.     <input type="text" id="input_2"><br>  
  21.     </div>  
  22.     <input type="checkbox" id="jelolo" onClick="check_it()" checked="checked">  
  23. </form>  
  24. </body>  
  25. </html>  
5

igen, a change eseményt nem

mhn · 2009. Jún. 3. (Sze), 18.00
igen, a change eseményt nem szerette az ie

ezt módotsítva:
$('#edit-private-private').change(function(){

így:
$('#edit-private-private').click(function(){

már megy is minden böngészőben :)

köszönöm!!!
már tegnap kész volt a form, de ma az egész nap azzal ment el, hogy h*lye IE-ben is működjön.