2012-09-20 3 views
0

MAX 값을 선택하면 어떻게 라디오 버튼 그룹을 비활성화 할 수 있습니까? 필자의 예에서는 2 개의 라디오 버튼 중 최대 2 개를 체크하고 나머지 2 개를 체크했을 때는 나머지를 무효로하고 싶다.MAX가 체크 된 경우 jquery 라디오 그룹을 비활성화하십시오.

<script type="text/javascript"> 
    $(document).ready(function() 
    { 
     var MAX=2;    
    }); 
</script> 

<form> 
<div> 
<ul> 
    <li><input type="radio" class="rbutton" name="radio[]" value="1" /></li> 
    <li><input type="radio" class="rbutton" name="radio[]" value="2" /></li> 
    <li><input type="radio" class="rbutton" name="radio[]" value="3"/></li> 
    <li><input type="radio" class="rbutton" name="radio[]" value="4" /></li> 
</ul> 
</div> 
</form> 
+2

하나 개의 라디오 버튼이 당신의 HTML에 따라 선택할 수있는 경우/else 문없이 할 수있는 방법에 대해 설명합니다. 다른 이름을 지정하거나 확인란을 지정하십시오. 라디오 버튼의 전체 점은 하나만 선택하는 것입니다. – j08691

+0

좋아요. 대신 type = "checkbox"를 사용한다고 가정 해 봅시다. Jquery 파트에서 도움이 필요합니다. – Ered

답변

3

당신은 체크 박스 대신

HTML

<ul> 
    <li><input type="checkbox" class="rbutton" name="radio[]" value="1" /></li> 
    <li><input type="checkbox" class="rbutton" name="radio[]" value="2" /></li> 
    <li><input type="checkbox" class="rbutton" name="radio[]" value="3"/></li> 
    <li><input type="checkbox" class="rbutton" name="radio[]" value="4" /></li> 
</ul>​ 

SCRIPT

$(function() { 
    var $inputs = $('input.rbutton'); 
    $inputs.change(function() { 
     if ($('input.rbutton:checked').length == 2) { 
      $inputs.not(':checked').prop('disabled', true); 
     } else { 
      $inputs.prop('disabled', false); 
     } 
    }); 
});​ 
0을 사용해야 시도

http://jsfiddle.net/D2QgX/

사실을 heres 당신이

$(function() { 
    var $inputs = $('input.rbutton'); 
    $inputs.change(function() {  
      $inputs.not(':checked').prop('disabled', $('input.rbutton:checked').length == 2);  
    }); 
});​ 
+0

tx 그냥 내가 뭘 찾고 있었는지 – Ered

0

라디오 버튼이 아닌 확인란이 필요합니다. 당신이라는 이름의 체크 박스를 일단하지만이 도움이 될 것 "체크 박스 []"같은 이름이 실제로 같은 이름이 ..에 다른 이름을 부여하려고 가진 두 개 이상의 라디오 버튼을 선택할 수 없습니다로 망쳐 놨주기

var $inputs = $('form input[type="checkbox"][name="checkbox\\[\\]"]'); 
$inputs.click(function() 
{ 
    if ($inputs.filter('*:checked').length >= MAX) 
    { $inputs.attr('disabled','disabled'); } 
    else 
    { $inputs.removeAttr('disabled');  } 
}); 
+0

이 코드는 작동하지 않습니다. – Ered

+0

나는이 코드를 작업 코드에서 꺼 냈습니다. 방금 이벤트 핸들러에서 래핑했습니다. 죄송합니다.이 코드를 "클릭"처리기에 넣을 것이라고 가정했습니다. – jimp

0

<li><input type="radio" class="rbutton" name="radio[1]" value="1" /></li> 
    <li><input type="radio" class="rbutton" name="radio[2]" value="2" /></li> 
    <li><input type="radio" class="rbutton" name="radio[3]" value="3"/></li> 
    <li><input type="radio" class="rbutton" name="radio[4]" value="4" /></li> 
1

라디오 버튼 .. 또는 완전히 사용 확인란은 .. 당신이 단순히 버튼을 사용하지 않으려면 type="checkbox"로 유형을 변경 요소에 장애인 속성을 추가해야합니다. 이 코드는 트릭을 수행합니다.

MAX = 2; 

$('.rbutton').click(function(){ 
    var checked = []; 
    $('.rbutton').each(function(){ 
    $(this).removeAttr('disabled'); 
    if($(this).is(':checked')) 
     checked.push(this); 
    }); 
    if(checked.length == MAX) 
    $('.rbutton').each(function(){ 
     if($.inArray(this, checked) == -1) 
      $(this).attr({disabled:'disabled'}); 
     }); 
});​ 

체크 박스가 선택되어 때마다, 그것은 확인 확인란을 모두 계산하고 그 카운트가 최대 동일한 경우, 그것은 그들 모두를 사용하지 않습니다. 또한 선택을 취소하고 다시 사용할 수 있습니다. See it working here.

+0

그러면 모든 확인란이 비활성화됩니다. OP는 "2가 나머지를 비활성화하는 것보다 확인 될 때"라고 말하면서 모두 비활성화하지 않았습니다. – j08691

+0

@ j08691 - 알았어요. 그 점을 지적 해 주셔서 감사합니다. :) – Aust

2

jsFiddle example

var MAX = 2; 
$('input.rbutton').click(function() { 
    ($('input.rbutton:checked').length == MAX) ? $('input.rbutton').not(':checked').attr('disabled',true):$('input.rbutton').not(':checked').attr('disabled',false); 
});​ 
관련 문제