2010-03-08 3 views
1

저는 이걸 가지고 제 기지에 있습니다.체크 박스를 눌러도 발사하지 않습니다.

누구나이 라인에 문제가있는 것을 볼 수 있습니까? 어떤 이유로 든 확인란을 클릭하여 함수가 실행되지 않지만 호출 함수가 제대로 작동합니다 (확인란의 레이블에 정확한 "onclick"특성을 복사하면 올바르게 작동합니다).

<input type="checkbox" name="match_35_0" id="match_35_0d" value="d0" onclick="checkSwap(document.page_form.match_35_0d, document.page_form.match_35_0)"></input> 

지구상에서 왜 이런 식으로 작동하지 않는지 알 수 있다면 정말 고맙겠습니다.

감사합니다.

편집 : 몇 사람들이 물어 때문에, 여기에 checkSwap 기능입니다 (이 수행하는 모든 내가 코드를 추가하기 전에 내 onclicks가 작동하는지 확인할 수 있도록 경고를 던져) :

function checkSwap(radioid, groupid) { 
alert("radio: " + radioid + " group: " + groupid);} 

을 그리고 여기 있어요 문제의 확인란에있는 테이블 셀의 전체 샘플 (서식에 대한 사과, 코드 샘플 내 줄 바꿈을 허용 할 것 같지 않습니다) :

<td><label onclick="checkSwap(document.page_form.match_34_0d,document.page_form.match_34_0)" for="match_34_0">N</label><input type="checkbox" name="match_34_0" id="match_34_0d" value="d1" onclick="checkSwap(document.page_form.match_34_0d, document.page_form.match_34_0)"></input></td> 

편집 : 좋아을 별도의 기능을 상쇄 확인란 상자를 1로 제한하는 것은 문제였습니다. .

제한을 수행하는 코드는 각 체크 상자에 대한 onclick 특성을 설정하는 것이 었으며 분명히 태그 집합 특성을 무시하고 있습니다. 나는 그것을 해킹하는 방법을 알아 내야 할 것이다.

+0

"checkSwap"이라는 어딘가에 선언 된 함수가 있어야합니다. 코드를 게시 할 수 있습니까? Firebug에서 Firefox 용 디버깅 도구를 찾아보십시오. –

+0

왜 클릭을 할 수 없지만 "onchange"에 바인딩을 시도했는지 확실하지 않습니까? 확인란의 경우 동작이 동일해야합니다. –

+3

'input' 요소에 대한 종료 태그가 없습니다 –

답변

1

document.page_form.match_35_0d 

실제로page_form을의 이름을 가진 형태로 검색이 구문 이름이 인 입력 요소의 경우 match_35_0d. 하지만 실제로 onclick이 정의 된 체크 박스의 id으로 설정했습니다.

당신은 온 클릭에 다음 호출로 문제를 해결할 수 : 체크 박스는 라디오 버튼과 동일하지 않습니다 그런데

checkSwap(this, document.page_form.match_35_0) 

당신이 실제로 함수에 ID의의를 통과하지 않는, 대신 전체 요소입니다. 함수를 다시 써 넣으십시오.

function checkSwap(checkbox, group) { 
    var checkboxId = checkbox.id; 
    for (var i = 0; i < group.length; i++) { 
     var element = group[i]; 
     var elementId = element.id; 
     // ... 
    } 
    // ... 
} 

ID로 요소를 얻으려면 Document#getElementById()을 사용하십시오.

+0

아, 나는 그 사실을 알지 못했다. (나는 당신이 말할 수있는만큼 많은 JS를하지 않았다). 당신은 나에게 'this'를 인수로 전달합니다. 이는 체크 박스의 onclick 속성에서 호출하는 것이 좋습니다. 그러나 ID로 해당 확인란에 액세스하기위한 올바른 구문은 무엇입니까? 사용자가 클릭하여 체크 스왑 기능을 실행하기를 바라는 라벨이 있습니다. 내가 말할 수있는 것부터, 제가 할 수있는 가장 쉬운 방법은 checkbox.onclick을 호출하는 것이고, ID로 특정 체크 상자 개체를 가리키는 방법을 모르겠습니다. – javanix

+0

'document.getElementById ('id')'를 사용하십시오. – BalusC

+0

우수합니다. 정상적으로 작동하는 것 같습니다. 도와 주셔서 감사합니다. – javanix

-1

this을 함수로 전달하는 것이 더 쉬울 것이며, 매개 변수는 함수를 호출 한 요소에 대한 참조가됩니다. 그래서 당신은 할 수 있습니다 :

function checkSwap(self){ 
    alert(self.id); 
} 

편집 : 또한, document.page_form.match_35_0.id는 ID가 아니라 당신이 그것을 가지고있는 방법을 얻을 것이다.

0

이 기능은 화재 않습니다 - 당신이 확인해야

<input type="checkbox" name="match_35_0" id="match_35_0d" value="d0" onclick="alert('55')"></input> 

불을 지르고 체크 'checkSwap'

0

이미 Jquery의 준비 기능을 가지고 있으면 ckeckbox의 Onclick 속성이 실행되지 않습니다. Jquery에서 click 이벤트를 추가해야한다. 그래야만 작동합니다. 아래처럼. 나는 그 이유를 모른다.

$('#cbFinalAttest').click(function (event) { 
    ... 
} 
+0

이것은 완전한 대답이 아닙니다. 질문에 jQuery가 포함되어 있지 않으므로 jQuery를 포함/사용하고 준비된 함수 등을 설명하는 방법에 대한 대답을 제공해야합니다. –

1

JQuery의 준비 메소드가 이미 정의 된 경우 Chek box onclick 이벤트가 작동하지 않습니다. 준비 상태에서 Jquery 클릭 이벤트를 추가하면 이벤트를 시작할 수 있습니다. 이것이 IE 문제인지 확실하지 않습니다 ..?

관련 문제