2011-04-20 3 views
1

이것은 내가 부탁하지만 또 다른 질문과 관련된 더 복잡한 (여기 질문 : jQuery - Able to disable checkboxes on condition, but odd problem)jQuery를 - 여러 조건 사용 안 함 확인란

나는 이제 선택 상자의 선택에 따라 체크 박스 비활성화 작업 코드가

: http://jsfiddle.net/gDHGY/2/

위의 링크에있는 코드는 학년 수준에 따라 체크 박스를 비활성화합니다. 다른 확인란을 선택하면 확인란을 사용하지 않도록 설정해야합니다. 예를 들어, "am"과 "week1"클래스가있는 체크 박스를 토글하면 다른 모든 "am1"체크 박스를 비활성화해야합니다. 하루 종일 "full"이라는 또 다른 클래스가 있습니다. 또 다른 예로 : "full week1"클래스가있는 체크 박스를 선택하면 "week1"과 "week1"확인란을 모두 비활성화해야합니다. 캠프 총계는 6 주이며 오전, 오후, 종일 옵션이 있습니다. 나는 모든 것이 의미가 있기를 정말로 바란다. 꼭 알려 주시면 더 잘 설명하겠습니다.

코드를 수정할 수 있습니까? 아니면 이것을 수행하기 위해 보조 코드를 사용하고 있습니까?

EDIT # 2 : 위의 jsFiddle 링크를 다시 업데이트했습니다.

업데이트 # 1 : Ian의 코드가 효과적입니다. 페이지로드시 체크 박스가 이미 선택되었을 때 동일한 기능을 실행하는 방법을 알아야합니다.

+0

"week1"을 토글하면 다른 "pm1 week"가 비활성화됩니까? 다른 "주 1"이 활성화 된 체크 박스 그룹과 함께 활성화되어 있지 않기 때문에 –

+0

@Ian Jasper Bardoquillo 당신은 맞습니다. 시나리오에 대한 충분한 체크 박스가 없었습니다. 미안합니다. 방금 위의 링크를 더 많은 확인란과 함께 업데이트했습니다. http://jsfiddle.net/gDHGY/1/ – Vincent

+0

업데이트 된 jsfiddle을 기반으로 클래스를 변경했는지 또는 로직이 변경되었는지 궁금합니다. 예를 들어 주 1이라고 말하면 토글을 끄면 어떤 checbox가 비활성화됩니까? 내가 1 주일 내로 모두 1 주일을 기다려야하며, 사용하지 않거나 새로운 규칙이 적용됩니까? –

답변

2

내 해결책을 확인하십시오. 이 :

http://jsfiddle.net/gDHGY/3/

+0

매우 도움이되었고 아름답게 작동했습니다. 체크 박스를 클릭했을 때뿐만 아니라 체크 박스 중 하나가 페이지로드시에 체크 된 경우 (입력 태그에 checked = yes가있는 경우와 같은) 동일한 작업을 수행하는 방법은 무엇입니까? 고마워요. 이안. – Vincent

+0

환영합니다 Vincent :) 정답으로 표시해주세요 :) 그러면 어떻게 될까요? 드롭 다운 목록에서 항목을 먼저 선택하고 체크 박스가 있는지 확인하고 이벤트를 트리거해야합니까? –

+0

미안하지만 나는 그것을 표시했다고 생각했습니다. 끝났다. :) 이미 선택되어있는 경우 드롭 다운 옵션도 선택됩니다.PHP를 사용하여 세션 변수를 기반으로 데이터를 채 웁니다. 데이터가 채워지도록 충분히 멀리 떨어진 사람은 이미 드롭 다운 상자에서 등급을 선택해야합니다. 그 이유 중 하나는 jQuery 코드가 학년에 기반한 체크 박스를 비활성화하는 것이 사용자 입력이 아닌 페이지로드에 영향을 미치는지 확인하는 것입니다. 다시 한 번 감사드립니다! – Vincent

0

코드보고에서 도움이되기를 바랍니다 내가 당신이해야하는 것은 당신의 체크 박스에 이벤트를 바인딩되는 생각 :

$('input[type=checkbox]').click(function() { 
    var classList = $(this).attr('class').replace(/\s+/g, "."); 
    if ($(this).attr('checked')) { 
     $('input.' + classList).attr('disabled', 'true'); 
     $(this).removeAttr('disabled'); 
    } else { 
     $('input.' + classList).removeAttr('disabled', 'true'); 
    } 
}); 

이 완전히 해결되지 것이다 문제는 단지 정확히 동일한 클래스를 사용할 수 없기 때문입니다 (예 : week1을 선택하면 week1 클래스가 비활성화되지 않음). classList에서 regexps를 사용하면 문제를 해결할 수 있습니다 (미안 해요 - 카페인의 아직 아침에 아직 쫓겨나지 않았다)

+2

이안 (Ian)이 훨씬 더 나은 해결책을 찾았습니다. –