digitalkaoz: fehlverhalten vom ie bzgl. selektieren von radio's

hallo leute,

ich ärger mich mal wieder über den ie...folgendes problem tritt auf:

ich habe ein formular mit vielen radio buttons (jeweils eine 5er gruppe hat den selben namen)...
nun möchte ich beim absenden überprüfen ob jeweils eins aus den radio-groups selektiert ist...folgendes js snippet geht in allen browsern, nur der ie stellt sich mal wieder quer...

function checkForm(frm){
 var ret = true;
 for(var i=0;i<frm.elements.length;i+=5){
  if(frm.elements[i].type == "radio"){
   var group = frm.elements[frm.elements[i].name];
   var checked = false;
   for(var a=0; a<group.length;a++){
    if(group[a].checked)
     checked = true;
   }
   if(!checked){
    ret = false;
    group = frm.elements[frm.elements[i].name];
    for(a=0; a<group.length;a++)
     group[a].parentNode.style.backgroundColor = "red";
   }else{
    group = frm.elements[frm.elements[i].name];
    for(a=0; a<group.length;a++)
     group[a].parentNode.style.backgroundColor = "#cecece";
   }
  }
 }
 if(ret == false)
  alert("Bitte treffen Sie eine Auswahl in den rot markierten Bereichen!");
 return ret;
}

das problem (soweit ich es identifizieren kann) ist das das der ie6 bei der zeile var group = frm.elements[frm.elements[i].name]; jeweils nur ein radio-button selektiert, und nicht wie er soll die ganze gruppe mit dem selben namen.

ich werd einfach nicht schlau aus diesem machwerk ie...vll kann mir ja jemand von euch auf die sprünge helfen was hier schief läuft...

ach hatte ich erwähnt das es "urgent" ist? ^^

mfg
robert

  1. Hallo,

    das problem (soweit ich es identifizieren kann) ist das das der ie6 bei der zeile var group = frm.elements[frm.elements[i].name]; jeweils nur ein radio-button selektiert, und nicht wie er soll die ganze gruppe mit dem selben namen.

    denke daran wird's nicht liegen.

    was zeigt denn ein

      
    if (group.length != 5 ) {  
      alert("group: "+group.length);  
    }  
    
    

    oder frage nach group.name oder group[0].name

    evtl sieht ja dein Formular anderes aus, als es das script erwartet.

    Werden die input-Elemente dynamisch durch document.createElement() erzeugt?

    Gruß plan_B

    --
         *®*´¯`·.¸¸.·
    1. Hallo

      group.length ergibt ein undefined, weils nunmal nur ein input element ist, habs das problem aber mittlerweile lösen können
      diese funktion hinzugefügt

      function findElements(_name,_frm){
       var nl = Array();
       var all = _frm.elements;
       for(var i=0;i<all.length;i++){
        if(all[i].name == _name)
         nl.push(all[i]);
       }
       return nl;
      }

      und in der anderen funktion die entsprechende zeile mit

      var group = findElements(frm.elements[i].name,frm);

      ersetzt. nicht schön, weil viel overhead beim iterieren produziert wird, aber geht...

      1. Hallo,

        var group = findElements(frm.elements[i].name,frm);

        ersetzt. nicht schön, weil viel overhead beim iterieren produziert wird, aber geht...

        sowas habe ich mir auch mal ausgedacht, war aber unnötig.
        ich hatte input-Elemente dynamisch durch document.createElement() erzeugt, da möchte der IE eine Extrawurst ...

        Gruß plan_B

        --
             *®*´¯`·.¸¸.·