2012-04-20 3 views
0

イベントハンドラonclickを作成し、IE 9,8,7イベントの開始は、私がオフにしたときにコンソールをオンにしたときにのみ機能します。どうすればこの問題を解決できますか?ありがとうございました! 私のコードがあります:IEでチェックボックスのonclickが機能しない

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);がコメントアウトされていないthatsのがあります。
これはコンソールがない場合IEのコードを壊します。

そして、あなたはすでにjQueryのを使用しているので、あなたはドキュメントの.change()機能/イベントを見てみたいかもしれませんが:http://api.jquery.com/change/
これは、あなたが最初の場所で使用したいものである可能性があります。

+0

ありがとうございました。 – Nait87

+0

@ Nait87それがあなたの問題を解決したら、あなたは[回答を受け入れることを検討したいかもしれません](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)。これはもちろん完全自発的であり、そうする義務はありません。この回答があなたに役立ち、問題が解決されたことを知らせるだけです。 (回答者には少しのボーナスしかありません)。 – Bart

関連する問題