onclick in复选框在IE中不起作用

时间:2012-04-20 07:01:39

标签: javascript jquery

我创建一个事件处理程序onclick并且IE 9,8,7事件开始工作只有当我打开控制台时我关闭它也会工作。我怎么解决这个问题?谢谢! 有我的代码:

function changeCheck(id) // onClick функция акт/деакт. checkbox
{
    //checkbox = $('span#'+id).children().eq(0); // получаем checkbox в объект
    checkbox = $('span#'+id).children().eq(0); // получаем checkbox в объект
    console.log(checkbox);
    if(checkbox.attr('rel') !='nosumm') 
    {
        var totalSum = parseInt($('div#stoim').children().text()); // получаем начальную стоимость        
        if(!checkbox.attr('value').length) // если кликнули по "платежным системам" 
        {
            if((checkbox).is(':checked') == false) // если еще не отмечено, то отмечаем
            {
                checkbox.checked=true;
                $('span#'+id).css('background-position','0 -22px');
                if(checkbox.attr('checked','checked'))
                {
                    $('div#type_plati').slideDown();
                }
            }
            else // если checkbox отмечен
            {
                $('span#'+id).css('background-position','0 0');
        for(var key in paysystem)
        {
                    if($('input#choise'+paysystem[key]).attr('value') && $('input#choise'+paysystem[key]).is(':checked')==true)
                    {
            //console.log($('input#choise'+paysystem[key]).attr('value'));
            //console.log($('input#choise'+paysystem[key]).is(':checked'));
            totalSum = totalSum - parseInt($('input#choise'+paysystem[key]).attr('value'));         
                    }
                    $('span#niceCheckbox'+paysystem[key]).css('background-position','0 0');
                    $('span#niceCheckbox'+paysystem[key]).children().eq(0).removeAttr('checked');
                }
                $('input#subTotal').val(totalSum); // Записуем финальную цену на отправку
                $('div#stoim').children().text(totalSum);           
                if(checkbox.removeAttr('checked')) $('div#type_plati').slideUp(); 
            }        
        }
        else
        {
            if((checkbox).is(':checked') == false) // если еще не отмечено, то отмечаем
            {
                checkbox.checked=true;
                $('span#'+id).css('background-position','0 -22px');
                checkbox.attr('checked','checked');
                if(checkbox.attr('checked','checked'))
                {
                    totalSum = totalSum + parseInt($(checkbox).attr('value'));
                    $('div#stoim').children().text(totalSum);
                }
            }
            else // если checkbox отмечен
            {
                $('span#'+id).css('background-position','0 0');
                if(checkbox.removeAttr('checked'))
                {
                    totalSum = totalSum - parseInt($(checkbox).attr('value'));
                    $('div#stoim').children().text(totalSum);
                }
             } 
            $('input#subTotal').val(totalSum); // Записуем финальную цену на отправку
            $('div#stoim').children().text(totalSum);           
        }
    }
    else // обычные checkbox
    {
        if((checkbox).is(':checked') == false) // если еще не отмечено, то отмечаем
        {
            checkbox.checked=true;
            $('span#'+id).css('background-position','0 -22px');
            checkbox.attr('checked','checked');
        }
        else // если checkbox отмечен
        {
            $('span#'+id).css('background-position','0 0');
            checkbox.removeAttr('checked');
        }  
    }    

}

有html代码:

<li><span class="niceCheck"  onclick="changeCheck(this.id)" id="niceCheckbox2" rel=""><input type="checkbox" name="ch1" id="ch1" value="370"/> <label  for="ch1">Форма обратной связи</label></span></li>

1 个答案:

答案 0 :(得分:1)

您的代码中有console.log(checkbox);未注释掉 如果没有控制台,这将破坏IE中的代码。

由于您已经在使用jQuery,因此您可能需要查看文档中的.change()函数/事件:http://api.jquery.com/change/
这可能是你想要首先使用的。