2012-04-20 85 views
0

工作,我做的事件处理程序的onclick和IE 9,8,7事件开始,只有当我打开控制台,当我关掉它会工作太努力。我怎么解决这个问题?谢谢! 有我的代码:的onclick的复选框不能在IE

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

。在你的代码console.log(checkbox);那不是注释掉。如果没有控制台
这将打破IE的代码。

既然你已经在使用jQuery你可能想看看文档中的.change()函数/事件:http://api.jquery.com/change/
这可能是你要在第一时间使用什么。

+0

谢谢,现在它的工作! – Nait87 2012-04-20 07:20:09

+0

@ Nait87如果解决您的问题,您[可能要考虑接受答案】(http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)。当然,这是完全自愿的,也没有义务这样做。它只是让我们知道这个答案是有帮助你和你的问题已经解决。 (除了导致回答者的小额奖励)。 – Bart 2012-09-07 09:50:24