2013-05-06 5 views
-3

내 facebox 양식의 모든 브라우저에서 .change(), .click() 또는 .keydown() 트리거가 작동하지 않습니다.Facebox 대화 상자 - jQuery 선택기가 입력 필드를 수정하지만 이벤트 트리거가 작동하지 않습니다.

- EDIT --- 문제는 facebox CLONES html이 대화 상자 요소에이를 표시하는 것입니다. 이 때문에 jquery 선택기는 작동하지만 이벤트 트리거는 복제본을 기반으로하지 않습니다. 해결 방법은 facebox를 수정하고 .clone() 비헤이비어를 제거하는 것입니다.

- END 편집 - 문서에

다음 작품 준비 :

#testE 텍스트 입력입니다
$('input#testE').css('background-color', 'red'); 

. 로드시 텍스트 상자 배경이 빨간색입니다. 그러나 ...

$('input#testE').keydown(function() { 
    $('input#testE').css('background-color', 'red'); 
}); 

트리거되지 않습니다. 나는 또한 .change().click()을 시도했다. 테스트를 위해 콘솔에 출력하지도 않습니다. 내 코드는 jsFiddle에서 제대로 작동하지만 내 환경에서는 작동하지 않습니다. 이것에 대한 어떤 생각?

편집 ....

문서 준비 문제에 대해 명확히하기 :

$(document).ready(function() { //on document load 

     console.log('test'); // this works 

     $('input#testE').keydown(function() { //won't fire 
      $('input#testE').css('background-color', 'red'); 
     }); 


        $('input#testE').css('background-color', 'blue'); //works 
      }); 
+2

문서 안에 준비가 되셨습니까? –

+3

@RocketHazmat - 질문은 – Quentin

+3

입니다. 거기에있는 코드가 JSFiddle에서 작동하지만 사용자 문서에서 작동하지 않으면 문제는 코드의 다른 부분에 있습니다.우리는 나머지 코드를 볼 수 없기 때문에 어디에서 말할 수 없습니다. 실제로 문제를 입증하는 테스트 케이스를 줄여야합니다. – Quentin

답변

2

$(this).prop('id') 

를 교체하십시오, 당신은 이미 문서에 존재하는 형태의 복사본을 만들고 그것을 표시합니다.

양식을 복사 할 때 현재 인라인 스타일 (노란색)을 사용하지만 이벤트 처리기를 사용하지 마십시오.

#req_acctdisplay: block으로 변경하면 원래 양식을보고 색상이 변경된 것을 볼 수 있습니다.

+0

매우 흥미 롭습니다! facebox.js에서 양식을 복제하고 있습니다! 나는 이것을 바꿔 그것을 고쳐 주는지 볼 것이다. 감사! – AshBrad

+0

이것은 몇 가지 스크립트를 약간 업데이트해야하지만 문제는 해결되었습니다! 매우 친절하고 감사합니다! 이 양식의 특정 경우 .clone()을 방지해야합니다. – AshBrad

+0

+1 좋은 캐치 ....! – writeToBhuwan

-1

난 당신이 요소를 클릭하지 않는 것을 의심은 당신이 실제로 원하는 .. 이 원인 일 수 있습니다 두 가지 요소가 겹치는 페이지에 CSS가 있습니다. (절대 위치 지정 또는 다른 것, CSS에 대해 많이 알지 못합니다.)

다음 방법을 사용하여 확인할 수 있습니다.

$('*').click(function(){ 
    console.log($(this).prop('id')); 
}); 

그리고 입력란을 클릭하고 올바른 ID인지 확인하십시오. jquery가로드 되었다면 (이것은 당신이 증명했듯이) 확실히 작동합니다.

편집 :

.prop가 작동하지 않는 경우, 당신은 아마 JQuery와의 이전 버전을 가지고있다. 소품 대신에 attr을 사용해야합니다. 당신이 "요청에게 계정"버튼을 클릭하면 그래서

$(this).attr('id') 
+0

그는 이미'$ ('input # testE')라고합니다 .css ('background-color', 'blue');도 작동합니다 .. – lifetimes

+0

@Zenith - 맞아. – AshBrad

+0

'준비'화재 이후에 키를 누르기 전에'$'를 덮어 쓰는 기회는 정말로 희박합니다. – Quentin