ugrás a tartalomhoz

Nem valid a formom, és nem ismerek más eljárást.

s_volenszki · 2007. Feb. 9. (P), 22.02
Sziasztok!

Van egy formom, amit az "Elküld" gomb megnyomására js készít elő, majd az előkészített adatokat AJAX-al dolgoztatom fel. Van radio típusú input csoport, aminek az értékét a rákattintáskor adtam át egy hidden mezőnek, és az ment el AJAX-al.
  1. function SetAnswer(answer){  
  2. document.getElementById('valasz').value = answer;  
  3. }  
  1. <input type="radio" name="kerdes" value="1" onClick="SetAnswer(this.value);">  
  2. <input type="radio" name="kerdes" value="2" onClick="SetAnswer(this.value);">  
  3. <input type="radio" name="kerdes" value="3" onClick="SetAnswer(this.value);">  
  4. <input type="hidden" id="valasz" name="valasz" value="">  
Na most ugye a validator azt mondja, hogy az input radionak nincs onClick eseménye. Hogyan lehet javascriptel, más módon (valid legyen az a fontos), böngésző függetlenül, radio csoport kiválasztott értékét feldolgozni?

Csak útmutatást kérek, légyszi, légyszi, légyszi! :-)

s_volenszki
 
1

XHTML?

BlackY · 2007. Feb. 9. (P), 22.30
Az XHTML szabvány szerint minden tulajdonság neve kisbetűs kell, hogy legyen. Szebb megoldás, hogy egy window.onload-kor lefutó JS kód helyezi el az esemény-kezelőket, nem pedig a html kódban vannak.

BlackY
2

JS kód helyezi el az esemény kezelőket.

s_volenszki · 2007. Feb. 10. (Szo), 09.21
Szia!

Valóban a nagybetű nem tetszett a validatornak. Részlezetnéd ezt a
JS kód helyezi el az esemény kezelőket.

gondolatmenetet?

s_volenszki
3

DOM

janoszen · 2007. Feb. 10. (Szo), 11.33
Hát, legegyszerűbb talán az, hogy a DOM fát manipulálod. Mondjuk, adsz egy ID-t vagy class-t az elemnek, amit le kell kezelni (ami legtöbbször úgyis van) és DOM manipulációval csinálod meg a dolgokat.
4

Rövid példakód

BlackY · 2007. Feb. 10. (Szo), 12.33
Ha ez így nem volt teljesen világos:
  1. <body>  
  2.   <form id="aformom" action="..." method="post">  
  3.      <!-- ... -->  
  4.   </form>  
  5. </body>  
Van egy ilyesmi formod, akkor ennek be tudsz állítani mindenféle eseménykezelőket (pl.: onsubmit, onclick, akármi)
  1. document.getElementById('aformom').onsubmit = function() { alert('Elküldik a formot!'); }  
  2. document.getElementsByTagName('form')[0].onclick = function() alert('Izé'); }  
Viszont arra figyelni kell, hogy amíg a DOM fában nincs benne a form, addig ez szépen elhasal, úgyhogy:
  1. document.onload = function() {  
  2.  var option = document.getElementById('aformom').getElementsByTagName('input');  
  3.  for(var i = 0; i < option.length; i++) {  
  4.     /* Itt megnézed, hogy radio button-e, és az adott csoporthoz tartozik, ha igen, akkor beállítasz egy eseménykezelőt: option[i].onclick = SetAnswer */  
  5.     }  
  6.  }  
(Érdemesebb a Prototype.js Event.observe funkcióját használni, de egyelőre megteszi)

BlackY