2016-10-04 62 views
0

我有一個複選框,如果它被選中,我希望文本框是可編輯的。如果它仍然未選中,那麼我希望文本框只能被讀取。這裏是我的JS:JS如果語句似乎沒有工作

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

我對複選框HTML:

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

的JS似乎使文本框readOnly的就好了,但是當我要確保複選框被選中,在文本框中仍然只讀。有什麼建議麼?

+2

你拼寫'budget'錯上線運行4 – Santi

+2

考慮這樣的jsfiddle:https://開頭jsfiddle.net/nwny4tdp/ - 這是你的確切代碼,它工作正常。你能否提供一些可以幫助我們縮小你的具體問題的背景,因爲它似乎不在你提供的片段中。 – Santi

+1

您的代碼何時執行?如果它只在加載頁面時執行一次,當您選中或取消選中該框時,顯然沒有任何變化。您需要添加一個事件偵聽器(可能是「更改」事件)來更新事件。 – jcaron

回答

3

你需要使用一個事件處理程序時,該複選框改變狀態

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

嗨安德魯,謝謝你的代碼工作!快速新手問題,使用addEventListener基本上是一個更簡單/更清晰的寫函數(即myFunction)版本,然後通過onchange腳本(即)在HTML中調用它? – Dave

+0

嗨,不,我不會說它更容易/更難,但我更願意將所有的HTML/JavaScript保存在單獨的文件中。它更清潔,更專業。我的態度是,我不會使用內聯樣式,那麼爲什麼要使用內聯js?雖然它基本上達到了同樣的事情 – andrew

+0

感謝您的澄清。我更喜歡你上面提到的方式。我一直在使用inline onChange方式,因爲它們遍佈全球,所以它更加令人困惑。再次感謝。 – Dave