elements['name'].disabled nur auf ein Element?

Gudy

Erfahrenes Mitglied
Hi,
ich erstelle mit PHP eien dynamische auswahl, wenn etwas bestimmtes gewählt wird, wird diese Funktion auch per JS aufgerufen
Code:
function setCheckbox(a_oSel, a_sAvoid)
{
    window.document['form1'].elements['showall'].disabled
        = (a_oSel[a_oSel.selectedIndex].value == a_sAvoid)?true:false;
}
was diese machen soll ist ja recht einfach, soll das element showall auf disable setzen.

wenn ich nur ein radiobutton habe der showall heisst geht es auch, wenn ich aber 2 oder mehr habe, werden diese nicht mehr auf disable gesetzt, kennt jemand eine Lösung?

Danke
 
Verwendet

document.getElementsByName()

Das liefert dir ein Array zurück.

Gehe im Array alle Elemente einzeln durch

vop
 
Hi,
erstmal danke, aber das wird nicht gehn....
Ich hatte schon versucht mit dieser Funktion immer das selbe Element zu disablen

Code:
function setCheckbox(a_oSel, a_sAvoid)
{
    window.document['form1'].elements['showall[1]'].disabled
        = (a_oSel[a_oSel.selectedIndex].value == a_sAvoid)?true:false;
}

so würde ja immer ein Element angesprochen werden, aber dies macht ihm nichts aus....
 
Und du bist sicher, dass das nicht funktioniert:
Code:
function setCheckbox(a_oSel, a_sAvoid)
{
    var arr = document.getElementsByName('showall[1]')
    for(i=0;i<arr.length;i++)
        document.getElementsByName('showall[1]')[i].disabled =
         (a_oSel[a_oSel.selectedIndex].value == a_sAvoid)?true:false;
}
 
Hi, ne auch alles leider nicht :(

ich habe mal win Beispiel erstellt, siehe Anhang, kann jaa uch sein das man mich nicht richtig versteht :suspekt:

Die Beiden Dateien unterscheiden sich nur daran das die eine 2 Radiobutton hat und die andere nur einen.

THX & Cu
 

Anhänge

Hi,

Svens Lösungsvorschlag ist schon richtig. Versuchs mal so:
Code:
function setCheckbox(a_oSel, a_sAvoid){
  // Falls die Radiogruppe aus nur einem Element besteht (wg. IE)
  if(typeof(window.document['form1'].elements['showall'].length) == "undefined"){
    window.document['form1'].elements['showall'].disabled
        = (a_oSel[a_oSel.selectedIndex].value == a_sAvoid)?true:false;
  }else{
    // Radiogruppe durchlaufen
    for(var i=0; i<window.document['form1'].elements['showall'].length; i++){
      window.document['form1'].elements['showall'][i].disabled
          = (a_oSel[a_oSel.selectedIndex].value == a_sAvoid)?true:false;
    }
  }
}
Die if-Anweisung wird notwendig, da der IE mit der length-Eigenschaft nicht zurecht kommt,
wenn die Länge 1 ist.

Ciao
Quaese
 
Wie Quaese schon sagte...der IE hat Probleme, wenn es nur 1 Element gibt. Dies ist aber nur beim Zugriff per JS-Methode der Fall.
Über die DOM-Methode gehts da auch mit einem einzelnen Element:
Code:
document.getElementsByName('showall')[1].disabled=....
 

Neue Beiträge

Zurück