2012-05-22 3 views
4

jQuery를 사용하여 여러 개의 (동적 인) 라디오 버튼 그룹을 반복하고 싶습니다. 선택이없는 경우 오류가 발생하여 양식 제출이 중단됩니다.jQuery - 모든 라디오 그룹을 확인합니다.

$("form").submit(function() { 
    $(":radio").each(function(){ 
     if($(this).val().length == 0) { 
      alert('Not selected all radios'); 
      return false; 
     } 
    }); 
}); 

그러나 (이) 실제로 라디오 버튼의 값이 아닙니다 어쩌면 $ 것처럼 항상는 제출을 중지 할 경우 문을 무시 :

여기 내 노력은 지금까지입니까?

가 여기에 jsFiddle이다 : 어떤 도움이 많이 주시면 감사하겠습니다 http://jsfiddle.net/aVVW9/

, 감사합니다!

답변

8

시험해보세요. 접근법은 모든 라디오 버튼을 통해 루프하는 것입니다. 그런 다음 :checked을 사용하여 라디오 버튼 그룹의 이름을 추출하여 해당 그룹의 구성원이 선택되어 있는지 확인하십시오. 간단한 부울은 처음 누락 된 검사가 발견 된 후에 오류를 중지합니다.

$("form").submit(function() { 
    var submitme = true; 
    $(':radio').each(function() { // loop through each radio button 
     nam = $(this).attr('name'); // get the name of its set 
     if (submitme && !$(':radio[name="'+nam+'"]:checked').length) { 
     // see if any button in the set is checked 
      alert(nam+' group not checked'); 
      submitme = false; 
     } 
    }); 
    return submitme; // cancel the form submit 
});  ​ 

http://jsfiddle.net/mblase75/aVVW9/5/

+0

많은 감사합니다.이 기능은 훌륭합니다. 아무 것도 선택하지 않으면 알림 만 표시되지만 이름을 제거하고 false를 반환하여 코드를 어떻게 든 단순화 할 수 있습니다. 알림 메시지 아래에서 실제로 제출하는 양식을 중지하지는 않습니다. ( – Nick

+2

경고 메시지를 원하는대로 변경할 수 있습니다. 라디오 그룹의 레이블 등에 "error"클래스를 추가하여 강조 표시 할 수도 있습니다 확인해야 할 버튼 : http://jsfiddle.net/mblase75/aVVW9/6/ – Blazemonger

+0

아, 편집에 대한 큰 감사드립니다. - D – Nick

1
$("form").submit(function() { 
    $(":radio", this).each(function(){ 
     if(!this.checked) { 
      alert('Not selected all radios'); 
      return false; 
     } 
    }); 
}); 

또는

$("form").submit(function() { 
    if($(':radio:not(:checked)', this).length) { 
     alert('Not selected all radios'); 
     return false; 
    } 
}); 

확인이 demo. 간단히하기 위해 클래스 radio_group을 가진 div 내에서 각 라디오 그룹을 감싸고 반복합니다.

+0

감사합니다.하지만이 경우 항상 false를 반환합니다. 확인되지 않은 그룹 내에 라디오 버튼이 있기 때문에 이것이 잘못된 것인지 궁금합니다. – Nick

+1

@ 닉 체크 내 업데이트 – thecodeparadox

+0

고맙지 만, 같은 (나는!에서 덧붙였다. 그리고 두 번째 코드도 시도했다 :() – Nick

0

실수로 단지 더 우아한 해결책을 발견했습니다! 이는 라디오 버튼의 정확한 수를 알고있는 경우에만 유용합니다.

var x = 0; 

$(":radio").change(function() { 
x = x + 1; 

if (x == count) { 

//do smth 

} 

}); 
관련 문제