Форум программистов, компьютерный форум, киберфорум
JavaScript для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/34: Рейтинг темы: голосов - 34, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 20.03.2018
Сообщений: 51

Как отловить изменение состояния input radio

03.10.2018, 00:00. Показов 7126. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени.
HTML5
1
2
3
4
5
6
7
8
9
10
11
<label>
    <input type="radio" name="radio" id="id1" onchange="radioChecked(this)" />RADIO-1
</label>
 
<label>
    <input type="radio" name="radio" id="id2" onchange="radioChecked(this)" />RADIO-2
</label>
 
<label>
    <input type="radio" name="radio" id="id3" onchange="radioChecked(this)" />RADIO-3
</label>
JavaScript
1
2
3
function radioChecked(e) {
    alert(e.id);
}
При выборе input type="radio" (атрибут checked) скрипт выводит его id.
Как сделать, чтобы function radioChecked(e) вызывалась дважды:
- для input type="radio", который получил checked;
- для input type="radio", потерявшего checked.
Последовательность вызова неважна.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.10.2018, 00:00
Ответы с готовыми решениями:

Изменение value в зависимости от значения <input>radio
Доброго дня! Есть связанные выпадающие списки, при выборе значения которых выдается картинка(извлекаю путь из value), теперь решил сделать...

Как отловить изменение состояния CheckBox в DatagridView
Не могу понять почему не чекает чекбокс... Сделал dataGridView checkbox Cell, но при нажатие на чекбокс, не чего не происходит. Как...

Как отловить изменение состояния CheckBox в DataGridView?
Как отловить изменение состояния CheckBox в DatagridView?

5
Эксперт JS
2037 / 1096 / 409
Регистрация: 29.04.2016
Сообщений: 2,625
03.10.2018, 00:27
Цитата Сообщение от Katya2000 Посмотреть сообщение
скрипт выводит его id
Вы тут привели только html, скрипт который выводит id где?
0
Эксперт JSЭксперт HTML/CSS
2151 / 1496 / 651
Регистрация: 16.04.2016
Сообщений: 3,696
03.10.2018, 00:59
Лучший ответ Сообщение было отмечено Katya2000 как решение

Решение

Katya2000, думаю пока рано Вам о мутациях рассказывать, поэтому пока такой вариант - https://codepen.io/qwerty_wasd/pen/OBMyzO

HTML5
1
2
3
  <input type="radio" name="radio-group" checked="checked"/>
  <input type="radio" name="radio-group"/>
  <input type="radio" name="radio-group"/>
JavaScript
1
2
3
4
5
6
7
8
9
// мы просто ловим предыдущий радио в переменную скоупом выше обработчика
let prevRadio=document.getElementsByTagName('input')[0];
[...document.getElementsByTagName('input')].forEach((e,i,arr) => {
  e.addEventListener('click',el=>{
      console.log(`radio ${i+1} стал ${el.target.checked}, а radio ${arr.indexOf(prevRadio)+1} - ${prevRadio.checked}`);
    // и уже здесь мы запоминаем на который кликали
      prevRadio = el.target;
  });
});
Только вот интересно стало - зачем? У Вас радио-группа. То есть чекнув один из них, его свойство checked === true, остальные априори станут false
1
Эксперт JS
2037 / 1096 / 409
Регистрация: 29.04.2016
Сообщений: 2,625
03.10.2018, 02:12
Цитата Сообщение от zlojnaxa Посмотреть сообщение
скрипт который выводит id где?
Пардон, спать пора не увидел функцию
0
0 / 0 / 0
Регистрация: 20.03.2018
Сообщений: 51
03.10.2018, 03:01  [ТС]
Цитата Сообщение от Qwerty_Wasd Посмотреть сообщение
Только вот интересно стало - зачем?
Qwerty_Wasd, это вершина ужасного айсберга
Если коротко, то к label-родителю нужно добавлять/убирать класс, в зависимости от checked радиокнопки.
0
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
03.10.2018, 11:08
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<!doctype html>
<html>
<head>
    <meta charset="utf-8" />
</head>
<body>
    <label>
        <input type="radio" name="radio" id="id1" onchange="radioChecked(this)" />RADIO-1
    </label>
    <label>
        <input type="radio" checked name="radio" id="id2" onchange="radioChecked(this)" />RADIO-2
    </label>
    <label>
        <input type="radio" name="radio" id="id3" onchange="radioChecked(this)" />RADIO-3
    </label>
    <script>
        let previousRadio = document.querySelector("input[name=radio]:checked"),
            previousId = previousRadio ? previousRadio.id : "отсутствует";
 
        function radioChecked(e) {
            alert("Предыдущий индекc радиокнопки: " + previousId
                + "\nТекущий индекс радиокнопки: " + e.id);
            previousId = e.id;
        }
    </script>
</body>
</html>
В Хроме работает идеально. В MS Edge не хочет отображать checked по умолчанию, но выдает, что выставлено ))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.10.2018, 11:08
Помогаю со студенческими работами здесь

Как вывести input radio в зависимости от выше выбранного input radio
Нужно сделать как бы вывод на странице двух input radion. Выбор пола. Мужчина и Женщина. Если я выбираю Мужчина, то выводятся ниже еще...

Изменение состояния radio
Доброго время суток. Подскажите, пожалуйста. Я хочу чтобы при клике по radio изменялся цвет border-radius у активной radio. Но что-то не...

Как установить значение input`а(type=radio) в TWebBrowser?
Добрый день. Подскажите пожалуйста, как выставить значение input`a(type=radio) в TWebbrowser?

Выбор radio input + text input
Всем привет. Никак не могу решить задачу. Суть такая: на странице динамически создаются группы по 3 радио баттона + 1 селект и 1 просто...

Как при переключении кнопки <input radio> выводить разные данные?
У меня есть форма для заявки. Там кнопка input radio: До обеда и После обеда. Хочу чтоб при выборе значения до обеда выводилось время...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru