2012-09-12 2 views
1

나는 다음과 같은 코드가 있습니다jQuery를 addClass

<input class="single_text_input group_1" type="text" name="primary_referral" /> 
<input class="single_text_input group_1" type="text" name="secondary_referral" /> 
<input class="group_1" type="radio" name="referral_open" value="Yes" /> Yes 
<input class="group_1" type="radio" name="referral_open" value="No" /> No 
<span id="2" class="red">Referral Group</span> 

무엇 지금 일어나고있는 것은 그 두 라디오 버튼입니다 : 여기

var selectedMarkerClass = 'was-selected'; 

$('.group_1').change(function() { 
    $(this).addClass(selectedMarkerClass); 

    if ($('.' + selectedMarkerClass).length == $('.group_1').length) { 
     $('#2').removeClass('red'); 
    } 
}); 

문제의 HTML입니다 그룹에서 클래스를 삭제하려면 span에서 클래스를 삭제해야합니다. 그룹의 라디오 버튼 중 하나만 변경해야하는 곳에서 작업하고 싶습니다.

+2

게시 내가 처음 가서 라운드를 포함하지 않는 사과 당신의 HTML 마크 업 코드 – Curt

+0

를 사용할 필요가있다. 내 글을 업데이트했습니다. – user1647550

+0

.length의 숫자 값을 확인 했습니까? console.info 나 화면에 써라. –

답변

1

click 이벤트는 change 이벤트가 아닙니다.

$('.group_1').click(function() { 
    $(this).addClass(selectedMarkerClass); 

    if ($('.' + selectedMarkerClass).length == $('.group_1').length) { 
     $('#2').removeClass('red'); 
    } 
}); 

업데이트 :

if ($('.' + selectedMarkerClass).length == $('.group_1').length) 

것은 당신을 트립된다. 선택한 클래스가 각 라디오에 추가 된 경우에만 빨간색 클래스를 제거하고 각 라디오를 클릭하면 선택한 클래스 만 추가 할 수 있습니다.

더 좋은 방법은 다음과 같습니다

$('.group_1').click(function() { 
    $('#2').removeClass('red'); 
}); 

적은 코드는 종종 번 더. 라디오를 선택 해제 할 수 없습니다. 따라서 라디오를 클릭하면 적어도 하나를 클릭 할 수 있습니다.

+0

이것은 내가 지금 가지고있는 것과 같은 결과를 가져 오는 것 같습니다. 그룹의 각 버튼을 클릭하기 만하면됩니다. – user1647550

+1

@ user1647550 문제와 더 나은 해결책에 대한 사려 깊은 설명을 추가했습니다. – iambriansreed

+0

시간 내 주셔서 대단히 감사합니다. 아마도 나는 당신의 솔루션을 오해하고있다. 그러나 내가 달성하고자하는 것은 특정 클래스 (group_1)의 모든 입력 요소가 클릭되거나 (바람직하게는 변경되었을 때) 스팬에서 클래스를 제거하는 것이다. 입력 요소는 혼합 된 가방, 라디오, 텍스트, 체크 박스 등이 될 것입니다. 귀하의 도움을 다시 한번 감사드립니다. 투표는 절름발이입니다. – user1647550

0

대신 click 이벤트로 시도해보십시오. 첫 번째 라디오 버튼이 포커스를 잃은 후 change이 시작되므로 두 번째 클릭 이후에 변경 사항이 적용됩니다.

0

라디오 버튼과 입력 [type = text] 클래스를 사용하기 때문에 라디오 버튼이 모두 변경된 후 $('.' + selectedMarkerClass).length == 2$('.group_1').length == 4입니다.

, 당신의 라디오 버튼을 필터링 "[name=referral_open]",

var selectedMarkerClass = 'was-selected'; 

$('.group_1').change(function() { 
    $(this).addClass(selectedMarkerClass); 

    if ($('.' + selectedMarkerClass).length == $('.group_1[name=referral_open]').length) { 
     $('#2').removeClass('red'); 
    } 
}); 
+0

답변 해 주셔서 감사합니다. @ K.K. 그것은 내가 필요한 것에 효과가있을 것입니다. 내가 너무 많은 라디오 버튼 그룹을 내가 (4oo 필드 이상) 함께 일하고있어 양식에 라디오 버튼을 각 세트에 대한 스크립트를 만들려고하지 않았기 때문에이 솔루션을 피하기 위해 노력했다. 다시 한 번 감사드립니다! – user1647550