Как переключить состояние флажка с помощью jQuery в Internet Explorer - PullRequest
1 голос
/ 25 февраля 2012

На форме, которую я имею, есть два флажка, скажем, Master и Slave. Всякий раз, когда проверяется ведущий, ведомый должен быть проверен (хотя ведомый может быть снят, если щелкнуть по нему отдельно). При загрузке формы - мастер установлен на проверку (значение по умолчанию), что означает, что ведомый также должен быть проверен.

Затем у меня есть некоторый обработчик события onChange, который вручную проверяет и снимает флажок ведомого на основе состояния мастера. Это где это не работает, просто в IE. Он отлично работает в других браузерах. Я понятия не имею, почему это происходит.

Я использую jQuery и некоторый класс CSS, который просто переключается между проверенным изображением и непроверенным изображением. Это проблема только с флажком CSS (визуальный / графический). Значение все еще верно для этого флажка.

Вот код

dojo.ready(function() { 
    // some code removed for simplicaity sake
$("#militaryOfficial").attr("checked", true);
$("#waiveTax").attr("checked", true);
}
$('#militaryOfficial').click('change', toggleTaxWaive);     
});

function toggleTaxWaive(){
if($("#militaryOfficial").is(':checked'))
{
    if(!$("#waiveTax").is(':checked'))
    {
        $("#waiveTax").trigger("click"); 
    }
}else
{
    $("#waiveTax").attr('checked', false);
}
}

HTML довольно простой. Добавление согласно запросам в комментарии

<div class="checkBox_Border">
 <span class="cds_spanCheck" style="background: url("/images/checkbox_nonSelect.png")     
 no-repeat scroll 0% 0% transparent;"></span>
 <span class="cds_spanCheck" style="background: url("/images/checkbox_Select.png") no-   
 repeat scroll 0% 0% transparent;"></span>
 <input id="waiveTax" class="checkBox_innerWrap" type="checkbox" checked="checked"   
 value="true" name="waiveTax">
</div>

Пожалуйста, сообщите. Любая помощь высоко ценится.

Ответы [ 2 ]

1 голос
/ 23 мая 2019

На самом деле есть еще более простой способ, вам просто нужно изменить флажок checked proprerty на true или false:

checkbox.on('click', toggleCheckbox);

function toggleCheckbox() { 
    if(checkbox[0].checked) checkbox[0].checked = false;
    else checkbox[0].checked = true;
}
1 голос
/ 25 февраля 2012

Попробуйте это:

  $("#Button1").click(function() {
               if ($('#Checkbox1').attr('checked')) {
                   Checkbox1.checked = false;
               }
               else {
                   Checkbox1.checked = true;
               }
           });
...