2010-03-11 8 views
1

누군가가 뭔가를 입력 할 때 Ajax 요청을 실행하려고하는 간단한 양식에 문제가 있습니다. 디버깅 후 이벤트가 시작될 때 경고 메시지가 표시되지만 브라우저와 관계없이 두 번 표시됩니다. (입력 태그에서 'rel'속성을 무시하십시오. 문제가되는 rel 속성을 생각하지 않는 한 다른 태그가 사용됩니다).아무 이유없이 Jquery 이벤트가 두 번 발생합니다.

<form class="formBig" name="formRegister" id="formRegister" method="post" action=""> 
    <label class="label" id="locationLabel" for="location">Location</label> 
    <input class="input" name="location" id="location" type="text" rel="locationLabel" value="" /> 
</form> 

<script type="text/javascript"> 
$("#location").click(function() { 
    alert($(this).attr('id')); 
}); 
</script> 
+0

jQuery 버전은 무엇입니까? 전체 HTML 및 JS 코드를 게시 할 수 있습니까? – Crozin

+0

이 코드는 문제가 없습니다. 그것은 다른 것입니다, 당신은 javascript 파일을 2 번 포함하고 있습니까? – Anurag

답변

1

나는 그것을 알아내는 것을 끝내었다. 왜냐하면 내가 포함하고있는 jquery가 양식 뒤에 넣어 졌기 때문이다.

그러나 document.ready 내에 포함하면 제대로 작동합니다. 나는 이것이 DOM과 관련이 있다고 가정한다. 나는 몰라, 나는 jquery에 관해서는 여전히 상당히 n00bish이다.

문서 준비는 head-tags 내에서 스크립트 include를 통해 호출됩니다.

+0

또 다른 방법은 동일한 요소에서 키와 클릭 이벤트에 바인딩하는 것입니다. Enter 키를 누르면 포커스가있는 요소에서 클릭 이벤트가 시작됩니다. – Jake

3

당신은 당신이 입력 할 때이를 클릭 할 때 호출하지된다는 것을 의미 텍스트 입력 필드에 클릭 이벤트 처리기를 바인딩합니다. keyup 이벤트를 사용해보십시오.

+0

잘 잡으세요! +1 –

+5

죄송합니다. 궁금합니다. 클릭이 두 번 발생하는 이유는 무엇입니까? –

+0

처음으로 경보를 입력하기 위해 입력을 클릭하면 사용자가 무엇을하고 있는지 알지 못하지만 경보를 닫고 다시 입력하여 두 번째 경보 표시 등을 클릭하면 ... –

0

기본적으로 해당 이벤트와 연관된 레이블이 있으므로 이벤트가 입력에서 두 번 트리거되고 연관된 레이블에서 다른 이벤트가 트리거되기 때문에 두 번 트리거됩니다.

관련 문제