Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Как заблокировать несколько checkbox? (https://javascript.ru/forum/jquery/36656-kak-zablokirovat-neskolko-checkbox.html)

wofat 23.03.2013 18:32

Как заблокировать несколько checkbox?
 
Доброго времени суток!

Допустим в одно вопросе имеется 5 вариантов ответа,если пользователь выберет 3 ответа все 5 блокируются:

$(".chbox").click( function () {
			var c = $(".chbox:checked").length;
			//alert(c);
			if(c>2)
			{
				$(".chbox").attr("disabled",true);
			}	
	});

для 1 вопроса это срабатывает,но если вопросов больше одного то всё блокируется,какое решение тут может быть ?

пробовал генерировать разные классы для каждого вопроса с вариантами ответов:
echo 'class="chbox_$i"';

затем через
var class = $("input").attr("class")
получал названия классов,только ведь переменная не подставляется в
$(class).click()

danik.js 23.03.2013 18:39

$(".chbox").click( function () {
    var form = $(this).closest('form');
    var c = $(".chbox:checked", form).length;
    //alert(c);
    if(c>2)
    {
        $(".chbox", form).prop("disabled", true);
    }  
});

Это если вопросы сгруппированы в отдельные <form>. Если иначе - можно использовать любой другой селектор, например .form

wofat 23.03.2013 19:14

в одной форме выводятся все вопросы с ответами,
если я правильно понял должно быть так:
<form>
<div>
<p><input  type="checkbox" name="1" value="" class="chbox" /></p>
<p><input  type="checkbox" name="2" value="" class="chbox"   /></p>
<p><input  type="checkbox" name="3" value="" class="chbox"  /></p>
<p><input  type="checkbox" name="4" value="" class="chbox"  /></p>
<p><input  type="checkbox" name="4" value="" class="chbox"  /></p>
<hr>
</div>

<div>
<p><input  type="checkbox" name="4" value="" class="chbox"  /></p>
<p><input  type="checkbox" name="2" value="" class="chbox"    /></p>
<p><input  type="checkbox" name="3" value="" class="chbox"  /></p>
<p><input  type="checkbox" name="4" value="" class="chbox"   /></p>
<p><input  type="checkbox" name="4" value="" class="chbox"   /></p>
<hr>
</div>
</form>
.......................


$(".chbox").click( function () {
    var form = $(this).closest('div');
    var c = $(".chbox:checked", form).length;
    //alert(c);
    if(c>2)
    {
        $(".chbox", form).prop("disabled", true);
    } 
});


но ничего не работает...

danik.js 23.03.2013 19:33

Ай не хорошо ведь обманывать:
<form>
<div>
    <p><input  type="checkbox" name="1" value="" class="chbox" /></p>
    <p><input  type="checkbox" name="2" value="" class="chbox"   /></p>
    <p><input  type="checkbox" name="3" value="" class="chbox"  /></p>
    <p><input  type="checkbox" name="4" value="" class="chbox"  /></p>
    <p><input  type="checkbox" name="4" value="" class="chbox"  /></p>
    <hr>
</div>
 
<div>
    <p><input  type="checkbox" name="4" value="" class="chbox"  /></p>
    <p><input  type="checkbox" name="2" value="" class="chbox"    /></p>
    <p><input  type="checkbox" name="3" value="" class="chbox"  /></p>
    <p><input  type="checkbox" name="4" value="" class="chbox"   /></p>
    <p><input  type="checkbox" name="4" value="" class="chbox"   /></p>
    <hr>
</div>
</form>
<script src="//code.jquery.com/jquery-latest.js"></script>
<script>
$(".chbox").click( function () {
    var form = $(this).closest('div');
    var c = $(".chbox:checked", form).length;
    //alert(c);
    if(c>2)
    {
        $(".chbox", form).prop("disabled", true);
    } 
});
</script>

wofat 23.03.2013 19:54

выяснил почему у меня не работало,y меня была подключена старая версия jQuery ( JavaScript Library v1.4.2 ) и сработало только когда prop заменил на attr, а у вас jQuery JavaScript Library v1.9.1 :) срочно обновляюсь


Часовой пояс GMT +3, время: 18:58.