рони, да, спасибо все работает. Вот только я могу совершить выбор в каждом из блоков 2 раза, а должно быть 3
$(function() { $(".blockq").each(function(c, a) { var b = $("input", a); $(a).on("click", "input", function(a) { $(this).addClass("bl"); b.prop("disabled", 3 < b.filter(".bl").length) }) }); var a = $(".blockq"); 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)) }) }) }) }); |
Цитата:
|
рони, в первой группе радиокнопок до их disabled я могу переключать 3 раза (1 раз только выбрать, остальные 2 раза переместить).
b.prop("disabled", 3 < b.filter(".bl").length) Как только добавил часть скрипта, в которой активен только тот блок радиокнопок в котором сейчас "щелкаю", а тот блок радиокнопок в котором уже что-то выбрал стал disabled. Имею возможность только 2 раза щелкнуть, а после весь блок радиокнопок неактивны. Видимо фишка в этой части c.prop("disabled", c.filter(".bl").length > +(a == d)) не могу понять как она влияет |
k_DizeL,
не осилил вашего описания, алгоритм построен на присутствии в блоке элементов с классом bl, если в блоке их больше 1 инпуты в блоке отключаются. пишите далее сами под свою логику на основе этого алгоритма или придумайте свой. |
рони, а нужно что бы в блоке могло быть от 1 до 3 .bl
|
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=[], oldVal=[], oldName; [].forEach.call(radio, function(el, ind) { el.addEventListener("click", function(){ var name = this.name; if (oldVal[name] != ind){ if (counter[name] != undefined){ counter[name]+=1; } else{ counter[name] = 1; } if (counter[name]>2){ $("[name='" + name + "']").prop('disabled', true); } oldVal[name] = ind; if (oldName && oldName != name){ $("[name='" + oldName + "']").prop('disabled', true); } oldName = name; } }) }) }); </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="q6" /><label for="q11">1</label><br /> <input type="radio" name="t2" id="q7" /><label for="q22">2</label><br /> <input type="radio" name="t2" id="q8"/><label for="q33">3</label><br /> <input type="radio" name="t2" id="q9" /><label for="q44">4</label><br /> <input type="radio" name="t2" id="q10" /><label for="q55">5</label><br /> <p> ТРЕТИЙ БЛОК </p> <input type="radio" name="t3" id="q11" /><label for="q11">1</label><br /> <input type="radio" name="t3" id="q12" /><label for="q22">2</label><br /> <input type="radio" name="t3" id="q13"/><label for="q33">3</label><br /> <input type="radio" name="t3" id="q14" /><label for="q44">4</label><br /> <input type="radio" name="t3" id="q15" /><label for="q55">5</label><br /> |
Manyasha, да, то что нужно. А каким образом можно указать исключение. Например для name="t3" можно 4 раза переключить до disable всего блока
|
Rise, хорошо, исправляюсь!
k_DizeL, например, так: <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script> <script> $(function() { var counter={}, oldVal={}, oldName; var limit = {t1: 2, t2: 2, t3: 3}; $("[type='radio']").on("click", function() { var name = this.name; if (oldVal[name] != this.id){ if (counter[name] != undefined){ counter[name]+=1; } else{ counter[name] = 1; } if (counter[name]>limit[name]){ $("[name='" + name + "']").prop('disabled', true); } oldVal[name] = this.id; if (oldName && oldName != name){ $("[name='" + oldName + "']").prop('disabled', true); } oldName = name; } }); }); </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="q6" /><label for="q11">1</label><br /> <input type="radio" name="t2" id="q7" /><label for="q22">2</label><br /> <input type="radio" name="t2" id="q8"/><label for="q33">3</label><br /> <input type="radio" name="t2" id="q9" /><label for="q44">4</label><br /> <input type="radio" name="t2" id="q10" /><label for="q55">5</label><br /> <p> ТРЕТИЙ БЛОК </p> <input type="radio" name="t3" id="q11" /><label for="q11">1</label><br /> <input type="radio" name="t3" id="q12" /><label for="q22">2</label><br /> <input type="radio" name="t3" id="q13"/><label for="q33">3</label><br /> <input type="radio" name="t3" id="q14" /><label for="q44">4</label><br /> <input type="radio" name="t3" id="q15" /><label for="q55">5</label><br /> |
Manyasha, спасибо огромное, то что нужно!
|
Часовой пояс GMT +3, время: 14:02. |