@SergeiB

Как проверить состояние радиокнопки?

Есть несколько радиокнопок. Нужно сделать следующее поведение: если нажимаешь на радиокнопку, которая уже имеет состояние checked, то она становится неактивной, а checked переходит на первую радиокнопку из её группы. Как перед кликом проверять, какое состояние у радиокнопки?
  • Вопрос задан
  • 191 просмотр
Пригласить эксперта
Ответы на вопрос 3
hzzzzl
@hzzzzl
Ответ написан
Комментировать
@geektimer
$('.radio-btn').change(function() {
  if ($(this).is(":checked")) {
    $('.radio-btn').prop( "checked", false );
    $('.radio-btn:first').prop( "checked", true );
  }
});
Ответ написан
Комментировать
mosesfender
@mosesfender
Меланхолик, параноик, падал с коек
var RGroup = (function () {
        function RGroup() {
            this.group = document.querySelectorAll('input[type="radio"]');
            var _that = this;
            [].map.call(this.group, function (_el) {
                _el.addEventListener('change', _el['_change'] = function (ev) {
                    if (this.checked) {
                        this.hasCheck = true;
                        _that.leaveAll(this);
                    }
                });
                _el.addEventListener('click', _el['_click'] = function (ev) {
                    if (this.hasCheck) {
                        this.setAttribute('disabled', 'disabled');
                        _that.group.item(0).checked = true;
                    }
                });
            });
        }
        RGroup.prototype.leaveAll = function (current) {
            [].map.call(this.group, function (_el) {
                if (_el != current && _el.hasCheck) {
                    _el.hasCheck = false;
                }
            });
        };
        return RGroup;
    }());
    var rg = new RGroup();


ну, или посовременней
spoiler
class RGroup {
        constructor() {
            this.group = document.querySelectorAll('input[type="radio"]');
            let _that = this;
            [].map.call(this.group, function (_el) {
                _el.addEventListener('change', _el['_change'] = function (ev) {
                    if (this.checked) {
                        this.hasCheck = true;
                        _that.leaveAll(this);
                    }
                });
                _el.addEventListener('click', _el['_click'] = function (ev) {
                    if (this.hasCheck) {
                        this.setAttribute('disabled', 'disabled');
                        _that.group.item(0).checked = true;
                    }
                });
            });
        }
        leaveAll(current) {
            [].map.call(this.group, function (_el) {
                if (_el != current && _el.hasCheck) {
                    _el.hasCheck = false;
                }
            });
        }
    }
    let rg = new RGroup();

Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы