Подтвердить что ты не робот

Как снять отметку с установленного переключателя

Дело в том, что это решение работает только в firefox

$(':radio').on("change", function(event){
    $(this).prop('checked', true);
});

$(':radio').on("click", function(event){
    $(this).prop('checked', false);
});

В хром он не позволит вам выбрать что-либо http://jsfiddle.net/wuAWn/

Ofc, я мог бы использовать переменную и писать что-то вроде

var val = -1;
$(':radio').on("click", function(){
    if($(this).val()==val) 
    {$(this).prop('checked', false);
    val = -1;
    }
    else val = $(this).val();
});

Но у меня будет несколько групп переключателей на моей странице, а содержимое html загружается через ajax, поэтому я бы хотел использовать функцию 1 для всех из них, вместо того, чтобы определять переменные для каждой группы переключателей и записывать одну и ту же функцию для каждая группа переключателей.

Изменить: спасибо за вашу помощь с флажками, но для флажков, чтобы действовать как группа переключателей, вам нужно написать adittional javascrip, который снимет все другие флажки с тем же именем onclick, у меня уже есть переключатель css и его проще для мне просто добавить класс, похожий на check-like-checkbox, и сделать его похожим на checkbox, я использую единую библиотеку для пользовательского вида, в любом случае вот мое странное решение http://jsfiddle.net/wuAWn/9/

4b9b3361

Ответ 1

Этот простой script позволяет снять отметку с уже установленного переключателя. Работает на всех браузерах с поддержкой javascript.

<html>
    <!-- html from your link: [http://jsfiddle.net/wuAWn/][1]  -->
    <body>
        <input type='radio' class='radio-button' name='re'>
        <input type='radio' class='radio-button' name='re'>
        <input type='radio' class='radio-button' name='re'>
    </body>

    <script type="text/javascript">
        var allRadios = document.getElementsByName('re');
        var booRadio;
        var x = 0;
        for(x = 0; x < allRadios.length; x++){

            allRadios[x].onclick = function() {
                if(booRadio == this){
                    this.checked = false;
                    booRadio = null;
                }else{
                    booRadio = this;
                }
            };
        }
    </script>
</html>

http://jsfiddle.net/6Mkde/

Ответ 2

Радиоустройства должны быть требуемыми параметрами... Если вы хотите, чтобы они были сняты, установите флажок, нет необходимости усложнять ситуацию и разрешать пользователям снимать флажок; удаление JQuery позволяет вам выбрать один из них

Ответ 3

Вы можете подумать о добавлении дополнительного переключателя в каждую группу с надписью "none" или тому подобное. Это может создать постоянный пользовательский интерфейс, не усложняя процесс разработки.

Ответ 4

попробуйте это

одна функция для всех радиоприемников имеет класс " радиокнопка

работают в хроме и FF

http://jsfiddle.net/wuAWn/5/

$('.radio-button').on("click", function(event){
    $('.radio-button').prop('checked', false);
     $(this).prop('checked', true);
});

Ответ 5

попробуйте это

http://jsfiddle.net/wuAWn/6/

    $('.radio-button').on("click", function (event) {
        var this_input = $(this);
        if (this_input.attr('checked1') == '11') {

            this_input.attr('checked1', '11')

        }
        else {
            this_input.attr('checked1', '22')
                        }
        $('.radio-button').prop('checked', false);
        if (this_input.attr('checked1') == '11') {
            this_input.prop('checked', false);
            this_input.attr('checked1', '22')
        }
        else {
            this_input.prop('checked', true);
            this_input.attr('checked1', '11')
        }

    });