Disable funktioniert im Firefox nicht?
hawkmaster
- javascript
0 Arbeitsloser0 Bla0 Daniel0 Bla
0 hawkmaster0 Jonathan0 Struppi0 hawkmaster0 Jonathan
Hallo zusammen,
ich habe mehrere Formular Elemente auf einer Seite z.b. wie folgt:
<div id="warn_chk_Range"><input name="chk_Range" type="checkbox" value="1"> Range</div>
Alle Elemente sind mit einer eindeutigen DIV ID gekennzeichnet.
Mit einer Javascript Funktion kann / will ich die Elemente disablen:
function disable_element(elm_id) {
elm = document.getElementById(elm_id);
elm.setAttribute("disabled","disabled");
}
Das funktioniert wunderbar im IE6 und IE7 und ich meine das es auch im alten Firefox ging.
Auf jedefall wirkt sich das im Firefox 2.0.0.3 nicht aus. Alle Elemente sind normal und werden nicht ausgegraut.
Kann mir jemand weiterhelfen oder hat eine Idee warum das im FF nicht geht?
Gruss und danke
hawk
Hallo,
Probier mal folgendes:
function disable_element(elm_id) {
elm = document.getElementById(elm_id);
elm.disabled = "disabled";
}
Selfhtml:setAttribute(), -> "beachten Sie"
Selfhtml:Javascript-Attributreferenz
Gruß, der Arbeitslose
Hallo
danke dir
Leider brachte dies keine Änderung.
Gruss
hawk
ich habe mehrere Formularelemente auf einer Seite z.b. wie folgt:
<div id="warn_chk_Range"><input name="chk_Range" type="checkbox" value="1"> Range</div>
elm = document.getElementById(elm_id);
elm.setAttribute("disabled","disabled");
Kann mir jemand weiterhelfen oder hat eine Idee warum das im FF nicht geht?
Weil <div> kein HTML-Attribut namens disabled kennt. Macht IMHO auch irgendwie keinen Sinn, ein totes Element zu deaktivieren; bei <form> ja, aber das kennt disabled leider auch nicht.
Schalte die <input>-Elemente in einer Schleife aus.
Davon unabhängig solltest du
elm.disabled = true;
benutzen, und da du auf die Fehlerprüfung eh verzichtest
document.getElementById(elm_id).disabled = true;
Hallo
danke auch dir;
was meinst du mit ;
<<Schalte die <input>-Elemente in einer Schleife aus.>>??
Die Elemente sind doch statisch auf dem Form und je nach Bedingung (die kommt per PHP aus einer Datenbank)
will ich das eine oder andere textfeld, checkbox oder anders disablen bzw. audgrauen?
Hast du eine andere Idee?
Gruss
hawk
hi,
bitte spiele nicht mit den beim Antworten vorgegebenen Zitatzeichen herum, dann bleibt die Konversation leichter lesbar.
was meinst du mit ;
<<Schalte die <input>-Elemente in einer Schleife aus.>>??
bla ging wohl davon aus, dass du mehrere Elemente auf einmal disablen wolltest. Willst du das nicht, brauchst du natürlich auch keine Schleife.
Hast du eine andere Idee?
Beseitige den logischen Fehler, auf den bla dich hinwies.
gruß,
wahsaga
hi,
bla ging wohl davon aus,
Sorry, du schreibst dich ja gross.
gruß,
wahsaga
Hi hawkmaster!
was meinst du mit:
Schalte die <input>-Elemente in einer Schleife aus.
Du durchläufst in einer Schleife alle input-Elemente und entscheidest, ob du es ausgrauen möchtest oder nicht.
Die Elemente sind doch statisch auf dem Form und je nach Bedingung (die kommt per PHP aus einer Datenbank)
will ich das eine oder andere textfeld, checkbox oder anders disablen bzw. audgrauen?
Okay, und warum tust du es dann nicht?
Du vergibst deinen input-Elementen nicht mal eine ID, erwartest aber, dass du sie trotzdem ansprechen kannst? (Was natürlich möglich ist. Allerdings kannst du ein Element, das keine ID hat, auch nicht über diese ansprechen.)
Hast du eine andere Idee?
Es gibt keine "andere" Idee. Wähle das input-Feld aus, das du ausgrauen möchtest und es funktioniert.
Ein Div kann man nicht ausgrauen.
MfG H☼psel
was meinst du mit
Schalte die <input>-Elemente in einer Schleife aus.
Wie schon gesagt wurde, dachte ich, du wolltest einen ganzen Block ausschalten. Falls dem so ist, kannst du dir wie gehabt das <div>- oder Was-auch-immer-Element ranholen und in einer Schleife sein childNodes-Attribut duchlaufen (ist ein Feld, das alle Kinder enthält), in etwa so:
var i;
var d = document.getElementById("element-id");
for (i = 0; i < d.childNodes.length; i++) {
if (d[i].nodeName = "INPUT") {
d[i].disabled = true;
}
}
Das Beispiel ist allerdings nicht gerade elegant, weil es a) nur <input>-Element ausschaltet (für <textarea> & Co. müsste die if-Abfrage entsprechend erweitert werden) und b) nur die direkten Kinder von element-id betrifft (für Kindeskinder müsste alles in eine Funktion, die sich rekursiv aufruft).
Aber das Prinzip sollte deutlich geworden sein, die Erweiterung überlasse ich dir zur Übung.
Die Elemente sind doch statisch auf dem Form und je nach Bedingung (die kommt per PHP aus einer Datenbank)
Du entscheidest per PHP? Machst du AJAX? Falls nicht, schreib doch gleich in PHP das disabled-Attribut zum betreffenden Element. Per PHP Javascript-Code zu erzeugen, der dann seinerseits die Elemete ausschaltet, finde ich etwas sehr kompliziert (zumindest so, wie es sich bis hierhin darstellt).
Ahoi hawkmaster,
wie wäre es damit die Divs auszublenden mit:
http://de.selfhtml.org/css/eigenschaften/positionierung.htm#display
oder
http://de.selfhtml.org/css/eigenschaften/positionierung.htm#visibility
MfG
wie wäre es damit die Divs auszublenden mit display oder visibility
Dann verschwinden komplette Seitenteile, was unter Umständen für den Überblick des Besuchers nicht gerade förderlich ist.
Hallo nochmals
vielen Dank nochmals an alle für die Tipps.
Ich hatte zuerst jedes Element mit eindeutingen IDs versehen.
Ich wollte mit den divs erreichenm, dass ALLES also auch der Text bzw. die Bescreibung neben dem Feld auch eingeschlossen wird.
Wenn ich es so mache, ist der Text "Range" ja noch ganz "normal".
<input name="chk_Range" type="checkbox" id="warn_chk_Range" value="1"> Range
Wie könnte man es erreichen das der Text vielleicht eine andere Farbe annimmt?
Gruss und danke
hawk
Hallo,
<input name="chk_Range" type="checkbox" id="warn_chk_Range" value="1"> Range
Wie könnte man es erreichen das der Text vielleicht eine andere Farbe annimmt?
Pack die Beschreibung in ein <label> das du dem <input> zuweist. Wenn du Glück hast wird das automatisch deaktiviert dargestellt, wenn du das zugehörige Formularelement deaktivierst, sonst musst du halt über Javascript nachhelfen.
Jonathan
<input name="chk_Range" type="checkbox" id="warn_chk_Range" value="1"> Range
Wie könnte man es erreichen das der Text vielleicht eine andere Farbe annimmt?
<label><input type="checkbox" onclick="this.parentNode.style.color ='#999';this.disabled=true;">label</label>
Struppi.
Ich habe es jetzt so gelöst:
Ich hoffe es spricht nichts dagegen;
Das Input Feld bekommt die ID und der Text davor ein Div mit ID plus Ergänzug "_Label"
<div id="warn_txt_RangeFrom_Label">From </div><input name="txt_RangeFrom" id="warn_txt_RangeFrom" type="text" value="Text" />
function disable_element(elm_id) {
elm = document.getElementById(elm_id);
elm.disabled = true;
elm_label = document.getElementById(elm_id+"_Label");
elm_label.parentNode.style.color ='#999';
}
Hallo,
Ich habe es jetzt so gelöst:
Ich hoffe es spricht nichts dagegen;Das Input Feld bekommt die ID und der Text davor ein Div mit ID plus Ergänzug "_Label"
<div id="warn_txt_RangeFrom_Label">From </div><input name="txt_RangeFrom" id="warn_txt_RangeFrom" type="text" value="Text" />
Wenn du noch aus dem <div> ein <label> machst, wird es fast perfekt.
Jonathan