Радиокнопка обратного порядка в IE JS - PullRequest
0 голосов
/ 22 марта 2011

У меня есть код, который работает правильно в FF, Safari и Chrome, однако в IE результат меняется на противоположный.Я показываю вопрос с переключателем «да / нет», затем на основании выбора я показываю «да» или «нет повторений».'position_1' - это элементы, которые отображаются, если выбрана первая опция переключателя ...

#My onclick js


function ShowHide(parent, position_1, position_2) {
    if (parent[0].checked) 
        {
            ShowIt(position_1); 
            HideIt(position_2);
        }
    else
        {
            if (parent[1].checked)
                {
                    HideIt(position_1);
                    ShowIt(position_2);}    
                else {}
        }       
}
#Additional JS
function ShowIt(childs) {
    //show it
    for (i=0;i<childs.length;i++) {
        jQuery("#"+childs[i]).css('margin-left','50px').css('background-color','#F2F2F2').slideDown();
    }
}
function HideIt(childs) {
    //hide it
    for (i=0;i<childs.length;i++) {
        jQuery("#"+childs[i]).slideUp();
    }
}

Приведенный выше код работает в FF, Chrome и Safari, как указано.Однако в IE с приведенным выше кодом это делает наоборот.Например, если выбрано то, что я воспринимаю как 'position_1' или сначала слева, это показывает дочерние входные данные для 'position_2' и наоборот.Если я поменяю позиции так ...

function ShowHide(parent, position_1, position_2) {
    if (parent[0].checked) 
        {
            ShowIt(position_2); 
            HideIt(position_1);
        }
    else
        {
            if (parent[1].checked)
                {
                    HideIt(position_2);
                    ShowIt(position_1);}    
                else {}
        }       
}

IE работает, а затем FF, Chrome и Safari меняются местами.Похоже, что мой порядок для опций радио противоположен для IE.Есть ли лучший способ сделать это, который будет работать во всех браузерах?

ОБНОВЛЕНИЕ

Фрагмент HTML (FYI я использую унифицированную форму пакета django для отображения формы)

<div id="div_id_question_181" class="ctrlHolder">
                    <label for="id_question_181">                    
                Is the Dog Friendly?*
            </label>
        <label for="id_question_181_0"><input name="question_181" onchange="ShowHide(question_181,new Array(&#39;div_id_question_220&#39;),new Array());" type="radio" class="radioselect" value="1" id="id_question_181_0" /> Yes</label> <label for="id_question_181_1"><input name="question_181" onchange="ShowHide(question_181,new Array(&#39;div_id_question_220&#39;),new Array());" type="radio" class="radioselect" value="0" id="id_question_181_1" /> No</label> 
   </div>
   <div id="div_id_question_220" class="ctrlHolder">
            <label for="id_question_220">                    
                Did you pet it?
            </label>
        <label for="id_question_220_0"><input value="1" type="radio" class="secondary_field triggeron_181 choice_0 radioselect" name="question_220" id="id_question_220_0" /> Yes</label> <label for="id_question_220_1"><input value="0" type="radio" class="secondary_field triggeron_181 choice_0 radioselect" name="question_220" id="id_question_220_1" /> No</label> 
   </div>

1 Ответ

0 голосов
/ 24 марта 2011

Я нашел решение Здесь , которое работает, и в попытке связать свободные концы вот что я сделал.Единственное, что я изменил, я отредактировал функцию ShowHide следующим образом.

function ShowHide(parent, position_1, position_2) {
var radioLength = parent.length;
for(var i = 0; i < radioLength; i++) {
    if(parent[i].checked) {
        var radio_value = parent[i].value;
    }
}
if (radio_value == 0) 
    {
        ShowIt(position_1); 
        HideIt(position_2);
    }
else
    {
        if (radio_value == 1)
            {
                HideIt(position_1);
                ShowIt(position_2);}    
            else {}
    }       

}

...