Некорректное отображение :checked при выборе через JavaScript

234
12 декабря 2016, 10:02

HTML:

<label class="radio-inline">
    <input type="radio" name="admin" value="t" id="adminTrue"> Да
</label>
<label class="radio-inline">
    <input type="radio" name="admin" value="f" id="adminFalse"> Нет
</label>

JavaScript

$('#infoUser').on('show.bs.modal', function (event) {
    var button = $(event.relatedTarget)
    var modal = $(this)
    var admin = button.data('user-admin')
    if (admin == 't') {
        modal.find('input[id="adminTrue"]').attr('checked', 'checked');
    } else {
        modal.find('input[id="adminFalse"]').attr('checked', 'checked');
    }
})
$('#infoUser').on('hide.bs.modal', function (event) {
    var modal = $(this)
    modal.find('input[name="admin"]').removeAttr('checked');
})

Браузеры отображают не правильно выделенные radio, хотя есть анализировать код Firebug, то в DOM все правильно меняется.

Здесь можно посмотреть полный код с примером:
http://codepen.io/ArsenBespalov/full/eNOwRy/

Answer 1

Проблема первая. У вас переменная admin undefined. Почему? Все из-за вашей невнимательности. У кнопки в примере есть атрибут data-user-id и нет атрибута
data-user-admin, который вы пытаетесь прочитать.

Проблема вторая. Невозможность повторной установки атрибута checked можно побороть следующим образом:

if (admin == 't') {
  modal.find('input[id="adminTrue"]').trigger('click');
} else {
  modal.find('input[id="adminFalse"]').trigger('click');
}

Протестировал несколько раз. С таким подходом выбранная радиокнопка всегда корректно отображается.

Answer 2

Устанавливать свойство checked нужно через prop

$().prop('checked', true);

READ ALSO
Дерганье слайдера при ресайзе

Дерганье слайдера при ресайзе

Вопрос собственно вот в чем: есть сайт http://wwwcentrsvet

181
Ajax Обновление нескольких блоков

Ajax Обновление нескольких блоков

Вопрос в следующемЕсть простой код в котром ajax обновляет блок div

330
jQuery Поднять на сервер json / работа с json на сервере

jQuery Поднять на сервер json / работа с json на сервере

Проблема не в коде! На этой ссылке мои json для тестa; мне не удается с jsona принять данныеМне кажется что я неправильно поднимаю на сервер

209
взаимозависимые чекбоксы

взаимозависимые чекбоксы

Для следующей верстки

150