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:

if(Drupal.jsEnabled){
  $(document).ready(reg_form_init);
}

function reg_form_init(){
  var element = document.getElementById('familyname');
  var element2= document.getElementById('address');
  var checkbox = document.getElementById('edit-private-private');
  
  if (checkbox.checked) {
       c = 'notprivate';
  } else {
    c = 'private';
  }
  element.className = c;
  element2.className = c;
  
  $('#edit-private-private').change(function(){
    	  
    if (checkbox.checked) {
      c = 'notprivate';
    } else {
      c = 'private';
    }
	  
    element.className = c;
    element2.className = c;

   });
}
 
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:

<html>
<head>
<script>
function check_it() {
	var show  = document.getElementById('show');
	var jelolo   = document.getElementById('jelolo');
	if (jelolo.checked) {
		show.style.display = 'block';
	}
	else {
		show.style.display = 'none';
	}	
}
</script>
</head>
<body>
<form>
	<div id="show">
	<input type="text" id="input_1"><br>
	<input type="text" id="input_2"><br>
    </div>
	<input type="checkbox" id="jelolo" onClick="check_it()" checked="checked">
</form>
</body>
</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.