2015-02-05 2 views
-1

У меня есть этот код для проверки флажка установлен или нет и отключить другие флажки на этой основе, но он всегда читает ложь независимо от выбранного флажка.проверить, установлен ли флажок или nt с помощью jquery

<script> 
    function DisableCheckboxes(id) { 
     var isChecked = $(this).is(':checked') ? true : false; 
     if (!isChecked) { 
       document.getElementById("test1").disabled = false; 
       document.getElementsByClassName("EducationCheckbox2001").disabled = false; 

      } else { 
       document.getElementById("test1").disabled = true; 
       document.getElementsByClassName("EducationCheckbox2001").disabled = true; 
      } 
    } 

</script> 

Я не понимаю, что может кто-нибудь мне помочь.

+1

Сторона примечания: вы должны решить, в какую сторону двигаться. 'jQuery' или' Vanilla Javascript'. Здесь нет причин смешать их. – melancia

+0

Покажите нам свою разметку HTML. – melancia

+0

как называется 'DisableCheckboxes'? что такое 'id'? –

ответ

-1

Пройди свой id имя в одинарные кавычки, как

onclick="DisableCheckboxes('test')" 

Вы Mixup javascript и jQuery код. Здесь jQuery код, который вы хотите enabled/disabled ваш флажок. Попробуйте

function DisableCheckboxes(id) 
{ 
    var isChecked = $("#"+id).is(':checked');   
    $("#test1, .EducationCheckbox2001").prop("disabled",isChecked); 
} 
+0

спасибо за код, но он не работает. это ошибка throwinh, в то время как я отлаживаю ошибку. Ошибка: Ошибка при сбое: ошибка синтаксиса, нераспознанное выражение: # [object HTMLInputElement] – preeti

+0

Используйте '.prop()' вместо '.attr()' – melancia

+0

Попробуйте это 'onclick =" DisableCheckboxes ('test') "' в одинарной кавычке, которую я упомянул в своем ответе – Sadikhasan

1

Ваше использование getElementsByClassName имеет проблему, поскольку она возвращает массив, document.getElementsByClassName("EducationCheckbox2001").disabled не будет ничего делать. Кроме того, вы передаете test в котором также переменная не получится, так как нет ни одной переменной с именем test, вы должны были пройти его в виде строки, как onclick="DisableCheckboxes('test')"

<input type="checkbox" name="2011" class="EducationCheckbox2011" value="EducationLiteracyRate2011" id="test" onclick="DisableCheckboxes(this)" /> 

затем

function DisableCheckboxes(el) { 
    $('#test1, .EducationCheckbox2001').prop('disabled', el.checked) 
} 

Я также хотел бы предложить вам чтобы переместить регистрации событий в JQuery вместо использования встраиваемых обработчиков событий, так

<input type="checkbox" name="2011" class="EducationCheckbox2011" value="EducationLiteracyRate2011" id="test" /> 

затем

//dom ready handler 
jQuery(function ($) { 
    //register a change event handler for the div 
    $('#test').change(function (e) { 
     $('#test1, .EducationCheckbox2001').prop('disabled', this.checked) 
    }) 
}) 
Смежные вопросы