0

イベント ハンドラー 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>
4

1 に答える 1

1

console.log(checkbox);コメントアウトされていないコードがあります。
コンソールがない場合、これはIEのコードを壊します。

また、すでにjQueryを使用しているので.change()、ドキュメントの関数/イベントを確認することをお勧めします。http: //api.jquery.com/change/
これは、最初に使用したいものである可能性があります。

于 2012-04-20T07:05:31.557 に答える