Button nicht mehrmals anklickbar

Dienchen

Grünschnabel
Hallo ihr Lieben,

nachdem ich jetzt seit ein paar Tagen mit einem Projekt beschäftige, einem Molmassenrechner treibt mich eine letzte Javascript Problematik in den Wahnsinn. Eine vorherige Version in der ich mich in viel zu vielen für mich komplexen Befehlen verstrickt habe, hab ich mittlerweile schon komplett verworfen.

Also jedenfalls geht es darum, dass ich gerne den Buttons mit der onclick function HinzufuegenElement so verändern möchte, dass sie nicht mehrmals hintereinander anklickbar sind (im Gegensatz zu den Zahlen unter Hinzufuegen).
Ich weiß auch, dass es irgendwie mit dem Befehl disabled zu tun hat, bin leider etwas ungeschickt diesen korrekt einzubinden. Bei selfthtml hab ich leider nur herausgefunden, wie ich buttons nacheinander anklickbar mache, dass ist aber leider nicht für meine Anwendung hilfreich.

Mein Code ist bisher:

function Check (Eingabe) {
var moeglich = "0123456789[]()+*.";
for (var i = 0; i < Eingabe.length; i++)
if (moeglich.indexOf(Eingabe.charAt(i)) < 0)
return false;
return true;
}
function Ergebnis () {
var x = 0;
if (Check(window.document.Rechner.Display.value))
x = eval(window.document.Rechner.Display.value);
window.document.Rechner.Display.value = x;
}
function Hinzufuegen (Zeichen) {
window.document.Rechner.Display.value = window.document.Rechner.Display.value + Zeichen;

}

function HinzufuegenElement(Zeichen) {
window.document.Rechner.Display.value = window.document.Rechner.Display.value + Zeichen;


}

Ich bin mir sicher es ist furchtbar trivial, aber ich komme einfach nicht drauf...

Liebe Grüße
Nadine
 
Hier ist die Pseudoklasse disabled beschrieben:
https://developer.mozilla.org/de/docs/Web/CSS/:disabled
Versuche, das Attribut "disabled" zu deinem Eingabefeld hinzu zu fügen:
Code:
function HinzufuegenElement(Zeichen) {
    window.document.Rechner.Display.disabled="";
    window.document.Rechner.Display.value =     window.document.Rechner.Display.value + Zeichen;
}
Dann ist das Eingabefeld jedoch insgesamt gesperrt. Wenn ich dich richtig verstehe, soll es jedoch nur für Eingaben über die Funktion HinzufuegenElement() gesperrt sein, nicht jedoch für Hinzufuegen(), die offenbar auf das selbe Eingabefeld wirkt. Um das zu ermöglichen, kannst Du ein selbst definiertes Attribut verwenden:
Code:
function HinzufuegenElement(Zeichen) {
    el = window.document.Rechner.Display;
    if (el.getAttribute("data-disabled") != "true") {
        el.setAttribute("data-disabled", "true");
        el.value += Zeichen;
    }

}
 
Zuletzt bearbeitet:
Hm ja ich hab mich wohl sehr blöde ausgedrückt. Erstmal vielen Dank, jetzt weiß ich immerhin wie ich das verwende, aber nicht meine Lösung.

Also bei einem Taschenrechner will man ja, dass die 2 mehrmals angeklickt werden kann, damit eine 22 entsteht. Ich möchte gerne, dass jeder Button unter HinzufuegenElement nur einmal klickbar ist also nur eine 2 oder 3 oder 4 aber keine 22 oder 33 oder 44. Mit der disabled funktion kann ich zwar nicht mehr die 22 herstellen was super ist! Aber danach kann ich keine 3 betätigen, weil die zur gleichen Buttonform gehört.

Ist das Problem überhaupt lösbar? Hilft es wenn ich den kompletten Quelltext mit HTML und CSSposte?
 
Geht nicht, gibt's nicht - das ist ganz bestimmt lösbar. Wenn ich dich jetzt richtig verstehe, brauchst Du nur zu prüfen, ob das aktuelle Zeichen schon vorhanden ist:
Code:
function HinzufuegenElement(Zeichen) {
    el = window.document.Rechner.Display;
    if (el.value.indexOf(Zeichen)  == -1) el.value += Zeichen;
}
Wenn es das noch nicht ist, dann mach am besten mal ein Demo unter jsfiddle.net und erkläre es.
 
Würde gerne auf erledigt schalten, jedoch finde ich hier weder den beschriebenen Button, noch eine weitere Möglichkeit dies zu tun
 
Zurück