2011-01-13 4 views
2

텍스트 입력란과 체크 박스가 있습니다. 텍스트를 변경 한 다음 입력 상자 외부를 클릭하거나 Enter 키 또는 Tab 키를 누르면 변경 이벤트가 발생합니다. 그러나 텍스트를 입력 한 다음 마우스를 사용하여 확인란을 직접 클릭하면 체크 상자 변경 이벤트 만 표시됩니다.자바 스크립트 텍스트 입력 변경 이벤트가 실행되지 않습니다.

$('.update').change(function(){ 
    console.log($(this)); 
}); 

이 알려진 문제이며, 어떻게 내가 모든 변경 이벤트가 트리거/슬로우 /에 걸려 있는지 확인 할 수 있습니다

<input type="text" name="text" class="update"> 
<input type="checkbox" name="check" class="update"> 

이 jQuery를 :

나는 다음과 같은 코드가 있습니다 이 설정?

+0

이 코드는 $ (document) .ready (function())에 있습니다. 기능? 함수에 alert()를 두어 함수를 친 것인지 확인할 수 있습니다. – codersarepeople

+0

이상한. 변경된 텍스트 입력을 체크 박스로 클릭하면 내 테스트가 작동하기 때문에 다른 것이 계속되어야합니다 http://jsfiddle.net/tbeseda/UCtyb/ – tbeseda

+0

정말입니까? HTML/JS를 복사하여 텍스트 상자에 내용을 입력 한 다음 확인란을 클릭하면 두 이벤트가 모두 실행되는 것을 볼 수 있습니다. – Chandu

답변

1

나는 그것을 얻을 수 있는지 잘 모르겠습니다. 하지만 텍스트 필드에 입력 한 다음 마우스로 체크 상자를 클릭하면 두 이벤트가 모두 발생합니다. 그러나 텍스트 입력의 '변경'이벤트는이 입력에 초점이 맞춰져 있어야한다는 것을 명심해야합니다. 필드가 포커스가있는 한 변경 이벤트가 트리거되지 않습니다. 이것은 어쨌든 귀하의 경우 일 수 있습니다. 체크 박스/라디오 박스는 다른 방식으로 작동합니다. 초점을 잃을 필요가 없습니다.

건배.

P. 내 테스트 케이스 : http://dl.dropbox.com/u/196245/index16.html

1

업데이트 클래스를 수신 중이므로 둘 다에 대한 변경 이벤트가 발생합니다.

1

입력 포커스가, 사용자 변경을 발사 입력 이벤트 사용하려면 다른 컨트롤

0

을 전환하지 않는 한 변경 이벤트가 발생하지 않습니다 : 화재

$('input').on('input',function(){...}) 

코드이 변경되면 DOMSubtreeModified 이벤트를 사용하십시오.

$('input').bind('DOMSubtreeModified',function(){...}) 

당신이 모두 사용자와 코드를 변경 발사 할 경우

$('input').bind('input DOMSubtreeModified',function(){...}) 

DOMSubtreeModified 이벤트가되지 때로는 매우 CPU 시간이 소요되는 것으로 표시되어 있지만, 신중하게 사용하는 경우 그것은 또한 매우 효율적일 수있다 ...

관련 문제