Пользовательские кнопки радио - IE убьет меня - PullRequest
0 голосов
/ 13 февраля 2012

Я использую jQuery для настройки некоторых радиокнопок. У меня есть две разные стили радиокнопок, поэтому вы увидите два оператора if, которые ищут эти два разных класса.

Проблема, с которой я постоянно сталкиваюсь, заключается в том, что скрипт отлично работает во ВСЕМ, кроме Internet Explorer. К сожалению, компания, в которой я работаю, назвала IE8 отраслевым стандартом для всех веб-сайтов, поэтому все, что выходит, ДОЛЖНО работать с IE8.

Я отправляю вам мой код

HTML для радиокнопки 1

<label class="label_radio-STD happy" for="happy3"><input id="happy3" name="q3" type="radio" value="YES"/></label>
<label class="label_radio-STD meh" for="meh3"><input id="meh3" name="q3" type="radio" value="INDIFFERENT"/></label>
<label class="label_radio-STD sad" for="sad3"><input id="sad3" name="q3" type="radio" value="NO"/></label>

HTML для переключателя 2

<label class="label_radio" for="radio0">0<input id="radio0" name="q5" type="radio" value="0"/></label>
<label class="label_radio" for="radio1">1<input id="radio1" name="q5" type="radio" value="1"/></label>
><label class="label_radio" for="radio2">2<input id="radio2" name="q5" type="radio" value="2"/></label>

JQuery для запуска всего shaz-бота

<script>
    function setupLabel() {
        if ($('.label_check input').length) {

            $('.label_check').each(function(){
                $(this).removeClass('c_on');
            });

            $('.label_check input:checked').each(function(){
                $(this).parent('label').addClass('c_on');
            });                
        };

        if ($('.label_radio input').length) {

            $('.label_radio').each(function(){
                $(this).removeClass('r_on');
            });

            $('.label_radio input:checked').each(function(){
                $(this).parent('label').addClass('r_on');
            });
        };

        if ($('.label_radio-STD input').length) {

            $('.label_radio-STD').each(function(){
                $(this).removeClass('s_on');
            });

            $('.label_radio-STD input:checked').each(function(){ 
                $(this).parent('label').addClass('s_on');
            });
        };

    };
    $(document).ready(function(){
        $('label').click(function(){
            setupLabel();
        });
        setupLabel(); 
    });
</script>

Я выдавал ALERTS в каждом утверждении IF, и они были хорошими, я бросал ALERTS в КАЖДЫЙ цикл, и они были хорошими. Раньше у меня была строка jQuery "$ ('body'). AddClass (" has-js ")" в качестве первой строки функции document.ready, но в теле html НИКОГДА не было класса has-js. Далее я посмотрел на код и понял, что он мне не нужен для кода, который я выполняю. Но меня все еще беспокоит, что $ ('body'). AddClass ("has-js") никогда не работал.

Может ли это быть так просто, как мой javascript для IE8 выключен? Если да, могу ли я включить его для тех, у кого оно может быть отключено?

Ответы [ 2 ]

3 голосов
/ 14 февраля 2012

Вот сломанный код от Мерфи.http://jsfiddle.net/GRstu/10/

Обратите внимание на строку CSS в скрипте input[type=radio]{display:none;}.Эта строка приведет к тому, что переключатель не будет отмечен / не отмечен при нажатии на ярлык.Так работает IE.Вам нужно будет сделать обходной путь, чтобы проверить скрытое радио при нажатии на соответствующую метку.

Вы можете сделать это, добавив строку в событие щелчка:

$('label').click(function() {
    $(this).children("input").prop("checked", true);  //This is the key
    setupLabel();
});

Вотjsfiddle решения: http://jsfiddle.net/GRstu/11/

Обратите внимание, что это решение и проблема, аналогичные тем, которые были предложены в этом вопросе: Метки и скрытые поля в Internet Explorer (и jquery)

1 голос
/ 13 февраля 2012

Вы можете добавить тег <noscript> в html для отображения сообщения пользователям с отключенным javascript, но вы не можете включить его для них на веб-странице.

Е.Г.

<noscript> Enable javascript! </noscript>

Однако, поскольку вы находитесь в корпоративной среде, ваш системный администратор может создать групповую политику , чтобы включить Javascript во всех настройках Internet Explorer всех пользователей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...