2016-10-04 4 views
0

У меня есть флажок, и если он установлен, я хочу, чтобы текстовые поля были доступны для редактирования. Если он не установлен, тогда я хочу, чтобы текстовые поля были прочитаны только. Вот мои JS:Оператор JS if не работает

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

Когда выполняется ваш код? Если он выполняется только один раз при загрузке страницы, очевидно, что ничего не изменится, если вы установите или снимите флажок. Вам нужно будет добавить прослушиватель событий (возможно, на событие «change»), чтобы обновить вещи. – 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), а затем вызывает ее в HTML через скрипт onchange (т. Е. )? – Dave

+0

Привет, нет, я бы не сказал, что это проще/тяжелее, однако я предпочитаю хранить все html/javascript в отдельных файлах. Его намного чище и профессиональнее. Мое отношение, я бы не использовал встроенные стили, так зачем использовать inline js? хотя он в основном достигает той же самой вещи – andrew

+0

благодарит за пояснения. Я предпочитаю ваш путь, упомянутый выше. Я использую inline onChange, и это на самом деле намного более запутанно, так как они повсюду. еще раз спасибо. – Dave