2009-04-03 9 views
2

레이블 > 안에 체크 박스가 있는데이 확인란을 선택하거나 선택 취소하면 기능을 트리거하려고합니다. 체크 상자에 onchange 트리거를 연결했지만 IE6에서는 트리거가 포커스가 체크 상자에서 해제 된 후에 만 ​​트리거되며 FF3과 크롬에서는 즉시 트리거됩니다. 내가 onchange를 트리거를 제거하고 < 라벨 >에 온 클릭 트리거를 부착하지만 레이블이 한 번 클릭 이제 트리거 화재 회 때 (이유를 알고 enyone합니까?) ...확인란을 선택하면 어떻게 작동합니까?

내 질문은 : 내가 어떻게 할 수 확인란을 클릭하면 해당 기능을 클릭하거나 선택을 취소하면 해당 기능이 실행됩니다.

감사합니다.

답변

6

은 체크 박스 자체의 OnClick에 기능을 장착, 당신은 멋진 ASP/JQuery와 솔루션을 원하지 않는 가정 잘 작동해야합니다.

(당신이 체크 박스가 체크 또는하지 않을 경우 다른 기반 기능 동작합니다을 갖고 싶어 물론, 당신은 함수에서 체크 박스의 현재 상태를 검사해야합니다.) Electrons_Ahoy "으로

3

을 "라고 말하면 간단히 onclick 핸들러를 checkbox 요소에 첨부 할 수 있어야합니다. 이 핸들러는 사용자가 체크 상자 대신 레이블을 클릭 할 때도 호출되어야합니다.

HTML :

<label><input type="checkbox" id="myCheckbox" />My Checkbox</label> 

자바 스크립트 :

document.getElementById("myCheckbox").onclick = function() { 
    if (this.checked) { 
     alert("Checkbox was checked."); 
    } 
    else { 
     alert("Checkbox wasn't checked."); 
    } 
}; 

위의 코드는 사파리 4, 파이어 폭스 3 (나는 그것이 IE에서 어떻게 작동하는지 잘 모르겠어요)에서 제대로 작동하는 것 같다.

스티브

1

하지 Prototype를 사용하여 당신을위한 옵션입니다,하지만 당신은 이런 식으로 할 거라고 그렇다면 (이 이전 버전에 기록 된 1.6 코드 약간 다를 수 프로토 타입을 가정합니다.) 확실 :

HTML :

<label><input type="checkbox" id="myCheckbox" />My Checkbox</label> 

JS :

$('myCheckbox').observe('click', function(cbox) 
    { 
     var cbox = $('myCheckbox'); 
     //do work in here. 
     //cbox is the DOM element that represents your checkbox 
    } 
); 

이 방법은 "알몸"JS 방식 (제 의견으로는)보다 약간 좋으며 약간 안전합니다.

1

답장을 보내 주셔서 감사합니다.

@Electrons_Ahoy 및 @Steve : 꽉 찼습니다. 내 문제는 내가 labe 안에 체크 박스를 두었 기 때문에 나는 folowing을했다. 나는 체크 박스를 체크 박스에 넣고 onclick 트리거를 넣는다.

또한 체크 박스가 라벨 안에 있고 onclick 트리거가 라벨에있을 때 트러거가 두 번 발생하는 이유를 알아 냈습니다 : 라벨을 클릭하면 체크 상자를 클릭하고 체크 박스를 클릭했기 때문입니다 라벨에서 클릭이 시뮬레이션 된 라벨, duuuuuhhh :)