Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 02.09.2016, 19:05
Аспирант
Отправить личное сообщение для k_DizeL Посмотреть профиль Найти все сообщения от k_DizeL
 
Регистрация: 20.02.2015
Сообщений: 54

Переключение radio-кнопок определенное количество раз
<p> ПЕРВЫЙ БЛОК </p>
<input type="radio" name="t1" id="q1" /><label for="q1">1</label><br />
<input type="radio" name="t1" id="q2" /><label for="q2">2</label><br />
<input type="radio" name="t1" id="q3"/><label for="q3">3</label><br />
<input type="radio" name="t1" id="q4" /><label for="q4">4</label><br />
<input type="radio" name="t1" id="q5" /><label for="q5">5</label><br />

<p> ВТОРОЙ БЛОК </p>
<input type="radio" name="t2" id="q11" /><label for="q11">1</label><br />
<input type="radio" name="t2" id="q22" /><label for="q22">2</label><br />
<input type="radio" name="t2" id="q33"/><label for="q33">3</label><br />
<input type="radio" name="t2" id="q44" /><label for="q44">4</label><br />
<input type="radio" name="t2" id="q55" /><label for="q55">5</label><br />

<p> ТРЕТИЙ .... и т.д.


Каким образом можно реализовать так, что бы переключить radio кнопку можно было не больше 2 раз в блоке? p.s. Не нашел инфы, даже, о том, как вообще запретить смену радиокнопок, не то что отследить их смену
Ответить с цитированием
  #2 (permalink)  
Старый 02.09.2016, 19:13
Аспирант
Отправить личное сообщение для k_DizeL Посмотреть профиль Найти все сообщения от k_DizeL
 
Регистрация: 20.02.2015
Сообщений: 54

Двигаюсь в сторону:
$("input:radio").prop('disabled', true);

Но как применить это условию после того, как сменили радиокнопку 3 раз.
Ответить с цитированием
  #3 (permalink)  
Старый 02.09.2016, 20:36
Профессор
Отправить личное сообщение для Manyasha Посмотреть профиль Найти все сообщения от Manyasha
 
Регистрация: 21.09.2015
Сообщений: 196

k_DizeL,
посмотрите такой вариант:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<script>
$(function() {
	var radio = document.querySelectorAll("[type='radio']");
	var counter=[];
	[].forEach.call(radio, function(el) {
	   el.addEventListener("click", function(){
		  var name = this.name;
		  if (counter[name] != undefined){
			counter[name]+=1;
		  } else{
			counter[name] = 1;
		  }
				console.log(counter[name])
		  if (counter[name]>2){
			$("[name='" + name + "']").prop('disabled', true);
		  }
	   })
	})
});
</script>
<p> ПЕРВЫЙ БЛОК </p>
<input type="radio" name="t1" id="q1" /><label for="q1">1</label><br />
<input type="radio" name="t1" id="q2" /><label for="q2">2</label><br />
<input type="radio" name="t1" id="q3"/><label for="q3">3</label><br />
<input type="radio" name="t1" id="q4" /><label for="q4">4</label><br />
<input type="radio" name="t1" id="q5" /><label for="q5">5</label><br />
 
<p> ВТОРОЙ БЛОК </p>
<input type="radio" name="t2" id="q11" /><label for="q11">1</label><br />
<input type="radio" name="t2" id="q22" /><label for="q22">2</label><br />
<input type="radio" name="t2" id="q33"/><label for="q33">3</label><br />
<input type="radio" name="t2" id="q44" /><label for="q44">4</label><br />
<input type="radio" name="t2" id="q55" /><label for="q55">5</label><br />

Только конечно лучше не все radio перебирать, а только те, что нужны.
Ответить с цитированием
  #4 (permalink)  
Старый 02.09.2016, 20:36
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

k_DizeL,
а кнопки можно обернуть в div.класс?
Ответить с цитированием
  #5 (permalink)  
Старый 02.09.2016, 20:42
Аспирант
Отправить личное сообщение для k_DizeL Посмотреть профиль Найти все сообщения от k_DizeL
 
Регистрация: 20.02.2015
Сообщений: 54

рони, можно и обернуть по группам bq1, bq2, bq3, bq4, bqN... например.
Ответить с цитированием
  #6 (permalink)  
Старый 02.09.2016, 20:42
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

Manyasha,
нужно индекс кнопки учитывать иначе можно случайно нажать одно и тоже 2 раза, а потом уже переключить не получится.
Ответить с цитированием
  #7 (permalink)  
Старый 02.09.2016, 20:55
Аспирант
Отправить личное сообщение для k_DizeL Посмотреть профиль Найти все сообщения от k_DizeL
 
Регистрация: 20.02.2015
Сообщений: 54

рони, а как учесть? Баг все же присутствует
Ответить с цитированием
  #8 (permalink)  
Старый 02.09.2016, 21:33
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

k_DizeL,
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>

  <script>
$(function() {
    $(".bg").each(function(c, a) {
        var b = $("input", a);
        $(a).on("click", "input", function(a) {
            $(this).addClass("bl");
            b.prop("disabled", 1 < b.filter(".bl").length)
        })
    })
});
  </script>
</head>

<body>

<p> ПЕРВЫЙ БЛОК </p><div class="bg">
<input type="radio" name="t1" id="q1"  /><label for="q1">1</label><br />
<input type="radio" name="t1" id="q2" /><label for="q2">2</label><br />
<input type="radio" name="t1" id="q3"/><label for="q3">3</label><br />
<input type="radio" name="t1" id="q4" /><label for="q4">4</label><br />
<input type="radio" name="t1" id="q5" /><label for="q5">5</label><br />
</div>
<p> ВТОРОЙ БЛОК </p><div class="bg">
<input type="radio" name="t2" id="q11" /><label for="q11">1</label><br />
<input type="radio" name="t2" id="q22" /><label for="q22">2</label><br />
<input type="radio" name="t2" id="q33"/><label for="q33">3</label><br />
<input type="radio" name="t2" id="q44" /><label for="q44">4</label><br />
<input type="radio" name="t2" id="q55" /><label for="q55">5</label><br />
</div>


</body>
</html>
Ответить с цитированием
  #9 (permalink)  
Старый 02.09.2016, 23:02
Аспирант
Отправить личное сообщение для k_DizeL Посмотреть профиль Найти все сообщения от k_DizeL
 
Регистрация: 20.02.2015
Сообщений: 54

рони, спасибо большое! А каким образом можно сделать так, что бы:
в первом блоке отметил радио кнопку. То во втором блоке если, я выберу одно радиокнопку то в первом блоке всем пропишется disable. И так для всех блоков в котором хотя бы одна радиокнопка активна.
Ответить с цитированием
  #10 (permalink)  
Старый 02.09.2016, 23:53
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

k_DizeL,

<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>

  <script>
$(function() {
    var a = $(".bg");
    a.each(function(d, b) {
        $(b).on("click", "input", function() {
            $(this).addClass("bl");
            a.each(function(a, b) {
                var c = $("input", b);
                c.prop("disabled", c.filter(".bl").length > +(a == d))
            })
        })
    })
});
  </script>
</head>

<body>

<p> ПЕРВЫЙ БЛОК </p><div class="bg">
<input type="radio" name="t1" id="q1"  /><label for="q1">1</label><br />
<input type="radio" name="t1" id="q2" /><label for="q2">2</label><br />
<input type="radio" name="t1" id="q3"/><label for="q3">3</label><br />
<input type="radio" name="t1" id="q4" /><label for="q4">4</label><br />
<input type="radio" name="t1" id="q5" /><label for="q5">5</label><br />
</div>
<p> ВТОРОЙ БЛОК </p><div class="bg">
<input type="radio" name="t2" id="q11" /><label for="q11">1</label><br />
<input type="radio" name="t2" id="q22" /><label for="q22">2</label><br />
<input type="radio" name="t2" id="q33"/><label for="q33">3</label><br />
<input type="radio" name="t2" id="q44" /><label for="q44">4</label><br />
<input type="radio" name="t2" id="q55" /><label for="q55">5</label><br />
</div>


</body>
</html>
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как и где задать цикл? Blondinka Events/DOM/Window 2 10.06.2014 15:29
Обрезание текста на определенное количество символов. hfts_rider Events/DOM/Window 7 05.02.2014 14:57
Вывод выбранного элемента radio. Срабатывает только во второй раз. Mukhtar Events/DOM/Window 3 09.08.2012 12:19
переключение radio zionko Элементы интерфейса 3 09.06.2011 16:13
прокрутка div на определенное количество пикселей вниз, вверх skalka jQuery 4 14.02.2011 01:47