2013-07-17 3 views
4

부트 스트랩 모달 안의 체크 상자가 작동하지 않는 이유는 무엇입니까?입력 유형 체크 박스가 부트 스트랩 모달에서 작동하지 않습니다.

나는 그것이 작동하기 위해이 코드를 사용하지만 여전히 문제

documentBody.on('click','.checkInp',null,function(e) { 
    var checkbox = $(this).find(":checkbox"), 
    checked = checkbox.is(":checked"); 
    checkbox.prop("checked", !checked); 

}); 

documentBody.on('click','.checkInp :checkbox',null,function(e) { 
    $(this).parent('span').trigger('click'); 

}); 

이 난을 클릭하면 그것의 체크되지는 또는 그것의 확인을 취소하지 않을 경우에는 체크가 나타나지 있습니까? 내가 체크 박스가 체크로 표시되는 스팬 영역을 클릭하거나

의 선택을 취소하면 그러나 여기 내 fiddle

답변

6

당신이 클릭 이벤트에서 부트 스트랩 조동사 e.preventDefault()을 극복하려고 추측입니다 - 작동하지 이유입니다. 또한 두 가지 사건은 서로에게 강박 관념이있는 것 같습니다.

대신을 시도해보십시오

$('.checkInp input:checkbox').on('click', function(e) { 

    // prevents the event from bubbling up the DOM tree 
    // eg the modal from cancelling the event 
    e.stopImmediatePropagation(); 

    var checked = (e.currentTarget.checked) ? false : true; 
    e.currentTarget.checked=(checked) ? false : checked.toString(); 
}); 

갈래 바이올린 : davidkonrad의 http://jsfiddle.net/AurPX/

5

해결책은 아주 좋은 것입니다. 레이블 - 태그는 존중하지 않습니다. 여기에 수정 된 버전이 있습니다.

jQuery(".modal input:checkbox,.modal label").on("click", function(e) 
{ 
    e.stopImmediatePropagation(); 
    var element = (e.currentTarget.htmlFor !== undefined) ? e.currentTarget.htmlFor : e.currentTarget; 
    var checked = (element.checked) ? false : true; 
    element.checked = (checked) ? false : checked.toString(); 
}); 
+0

(않지만 모든 라벨없는이 실행, 끔찍하지, 아마,하지만 정확한?.) –

+0

이모, 그것은해야 이런 식으로 같은 . 그것은 단지 .modal 요소 안에있는 레이블을 포착합니다. –

+0

예, 가능하지만 다른 레이블이있을 수 있습니다. –

-3

또한이 문제에 직면했습니다.

불행히도 JQuery로 해결하기가 쉽지 않았지만 다른 방법으로 전환해야했습니다.

마지막으로 angularjs가이를 해결했습니다.

시도해보십시오.

<div class="modal fad" 
.... 
<input type="checkbox" class="css-checkbox" ng-checked="checked"> 
</div> 

JS : 그냥 설정이 사실

$scope.checked = 'true'; 
+0

질문과 전혀 관련이 없습니다. 다른 프런트 엔드 프레임 워크로 전환하는 것은 확실히 해결책이지만 2 년 전 OP의 질문에 직접적으로 언급하지는 않습니다. –

관련 문제