2016-10-04 2 views
0

Ich habe ein Kontrollkästchen, und wenn es aktiviert ist, möchte ich Textfelder bearbeitbar sein. Wenn es deaktiviert bleibt, möchte ich, dass die Textfelder readOnly sind. Hier ist meine JS:JS wenn Anweisung scheint nicht zu arbeiten

if (document.getElementById('itemize').checked==false) { 
    document.getElementById('budget_1').readOnly = true; 
} else { 
    document.getElementById('budget_1').readOnly = false; 
    } 

Mein HTML-Code für das Kontrollkästchen:

<input type="checkbox" id="itemize" style="width: 20px; height: 20px;" /> 

Die JS scheint das Textfeld readonly einfach gut zu machen, aber wenn ich sicher, das Kontrollkästchen aktiviert wird, um das Textfeld bleibt readOnly. Irgendwelche Vorschläge?

+2

Sie buchstabiert 'budget' falsch auf Linie 4. – Santi

+2

dieses JSFiddle Bedenken Sie: https: // jsfiddle.net/nwny4tdp/ - Es ist Ihr genauer Code und es funktioniert gut. Können Sie einen Kontext bereitstellen, mit dem wir Ihr spezifisches Problem eingrenzen können, da es nicht in dem von Ihnen bereitgestellten Code enthalten ist? – Santi

+1

Wann wird Ihr Code ausgeführt? Wenn es beim Laden der Seite nur einmal ausgeführt wird, ändert sich offensichtlich nichts, wenn Sie das Kontrollkästchen aktivieren oder deaktivieren. Sie müssten einen Ereignis-Listener hinzufügen (wahrscheinlich beim Ereignis "change"), um die Dinge zu aktualisieren. – jcaron

Antwort

3

Sie müssten einen Event-Handler ausführen verwenden, wenn das Kontrollkästchen Zustand ändert

var 
 
     budget_1 = document.getElementById('budget_1'), 
 
     itemize = document.getElementById('itemize'); 
 
     
 
    itemize.addEventListener("change", readonly); 
 

 
    function readonly(){ 
 
     if (itemize.checked==false) { 
 
      budget_1.readOnly = true; 
 
     } else { 
 
      budget_1.readOnly = false; 
 
     } 
 
    }
<input type="checkbox" id="itemize"/> 
 
<input type="text" id="budget_1" readonly/>

+0

Hallo Andrew, danke, dass dein Code funktioniert hat! Quick Newbie Frage, verwendet AddEventListener im Grunde eine einfachere/sauberere Version des Schreibens einer Funktion (d. H. MyFunction) und dann Aufruf in HTML durch onchange Skript (d. H. )? – Dave

+0

Hallo, nein, ich würde nicht sagen, es ist einfacher/schwerer, aber ich bevorzuge es, alle HTML/Javascript in separaten Dateien zu halten. Es ist viel sauberer und professioneller. Meine Einstellung ist, ich würde nicht Inline-Stile verwenden, also warum Inline-Js verwenden? obwohl es im Grunde dasselbe erreicht – andrew

+0

danke für Ihre Klarstellung. Ich bevorzuge deinen oben erwähnten Weg. Ich habe die Inline-OnChange-Methode verwendet und es ist tatsächlich viel verwirrender, da sie überall zu finden sind. Danke noch einmal. – Dave

Verwandte Themen