2012-08-28 1 views
1
//show city/state on input maxlength 
$("input#billZipCode").live("keyup", function(event){ 

    if(this.value.length == this.getAttribute('maxlength')) { 
     if(!$(this).data('triggered')) { 
      // set the 'triggered' data attribute to true 
      $(this).data('triggered', true); 
      if ($(this).valid() == true) { zipLookup(this, "USA"); } 
     } 
    } else { 
    $(this).data('triggered', false); 
    } 

}); 

함수 zipLookup이 ajax 호출을 수행하고 필드를 채 웁니다.maxLength에서 ajax 호출 - CTRL V (붙여 넣기)에서 업데이트하지 않음

위의 코드는 사용자가 우편 번호를 입력 할 때 작동합니다. 그러나 사용자가 우편 번호를 입력하고 새 우편 번호 값을 붙여 넣으면 함수가 다시 실행되지 않습니다. the documentation에 명시된 바와 같이,이 IE8에서 작동하지 않는 것을 https://developer.mozilla.org/en-US/docs/DOM/element.onpaste

참고 : JQuery와에 의해 사용되는 onpaste 콜백에

$(document).on('change keyup paste', '#billZipCode', function(){ 
    // do something 
});​​​​​​ 

참조 :

+0

가장 쉬운 방법 사용자가 버튼을 클릭하거나 리턴 키를 눌러이를 호출하도록 요구하는 것입니다. 그렇지 않으면 타이핑뿐만 아니라 붙여 넣기를 감지하는 사용자 정의 코드 (키보드와 마우스 모두)를 작성해야합니다. – Utkanos

+0

@Utkanos - 네, 그렇게하려면 사용자 정의 코드를 작성하고 싶습니다 - 따라서 StackOverflow에 게시합니다 – Jason

답변

0

당신은 paste 이벤트를 잡을 수 있습니다 당신은

Internet Explorer 8 이하에서는 붙여 넣기 및 다시 설정 이벤트거품이 없습니다. 이러한 이벤트는 위임과 함께 사용할 수 없지만 이벤트 처리기가 이벤트를 생성하는 요소에 직접 첨부 된 경우 사용할 수 있습니다.

사이드 노트 :

  • 사용 "#billZipCode"이 아닌 "입력 #의 billZipCode"(지원되지 않습니다)
  • 사용 on하지 live이 주위
+0

'.on'을 jQuery 1.6.2와 함께 사용할 수 없습니다 - 접근 방식이 동일하다고 가정합니다. – Jason

+0

예, 동일합니다. . 하지만 jQuery를 업그레이드하지 않으시겠습니까? –

+0

크면 jQuery 업그레이드주기가 느려집니다 ... – Jason