2010-01-13 2 views
8

나는 paste 이벤트를 JQuery를 사용하여 바인딩하는 텍스트 필드를 가지고 있습니다. 처음 양식 필드에 무엇인가 붙여 넣고 로그에 val()을 기록하면 빈 문자열이 반환됩니다. 마찬가지로 필드에 다시 붙여 넣으면 붙여 넣기 전에 을 반환합니다. 붙여 넣기 본질적으로 나는 더 나은 용어가 부족하여 경쟁 조건이나 연속 문제가 있습니다. 붙여 넣기 이벤트가 완료 될 때까지 양식 필드가 업데이트되지 않는 것 같습니다.붙여 넣기 이벤트 중에 필드 값을 가져 오는 방법은 무엇입니까?

붙여 넣기 이벤트가 완료되고 실제로 필드가 채워진 후 필드의 값을 확인할 수있는 방법이 있습니까? clipboardData가 아닌 실제 필드 값을 원합니다. IE 전용 기능입니다.

$('#url').bind('paste', function(e) { 
    alert($(this).val()); 
}); 
+0

붙여 넣기 대신 변경 이벤트를 사용할 수 없습니까? – kender

+0

@ kender - 사용자가 포커스를 입력에서 멀리 이동할 때까지 OP가 대기하려고하는 경우에만. –

+2

한 가지 중요한 점은 'paste'이벤트는 버전 5 이후 IE에 있었지만 상대적으로 최근에 다른 브라우저에 포함되었습니다. 예를 들어, Firefox 2에는 없습니다. –

답변

16

그것은 괜찮은 솔루션을 밝혀 비동기를 만들기 위해, 0 밀리 초 지연하는 setTimeout()에 콜백을 래핑하는 것입니다.

나의 새로운 코드는 다음과 같습니다

var urlField = $('#url'); 
urlField.bind('paste', function(e) { 
    setTimeout(function() { 
     alert(urlField.val()); 
    }, 0); // note the 0 milliseconds 
}); 

감사 DigitalBush's Masked Input Plugin, 그것은 소스를 통해이 기술을 사용합니다.

+0

이 필드의 값을 얻는 것에 의존하는 잠복 작업에 대해서는이 기능을 사용할 수 있습니다. – Soviut

관련 문제