JQuery-UI 1.8.23 copy paste issue works on second attempt

JQuery-UI 1.8.23 copy paste issue works on second attempt

We are using following JQuery code (within JSF) to invoke Autocomplete. Everything seems to work fine when user keys in data but when user copies and pastes Autocomplete will be invoked on second attempt. I am testing following code in IE 8. Any inputs are appreciated



  1.     
  2. <script type="text/javascript">
  3. $(function () { 
  4. $(document).on('keyup.autocomplete','##{resp.workItemResponse.wiResponseId}', function() {
  5. $('##{resp.workItemResponse.wiResponseId}').autocomplete({
  6. minLength: 3,
  7. source: function( request, response){
  8. $.ajax({
  9. type: 'GET',
  10. url: "/iaportal/autoCompleteServlet",
  11. cache: false,
  12. delay: 200,
  13. data: {
  14. 'respId':'#{resp.workItemResponse.wiResponseId}',
  15. 'type': '#{autoCompleteType}',
  16. 'term':request.term
  17. },
  18. contentType: "application/json; charset=utf-8",
  19. dataType: "json",
  20. success: function(data){
  21. response($.map(data.acctNum, function (item) {
  22. return {                                
  23. label: item.label,
  24. value: item.label
  25. }
  26. }));
  27. },
  28. error: function(message){
  29. alert("error "+message);
  30. }
  31. });
  32. },
  33. select: function( event, ui ) {
  34. var selectedObj = ui.item;
  35. var text = selectedObj.value;
  36. $('.autoComplete#{resp.workItemResponse.wiResponseId}').attr('value', text);
  37. $('.autoComplete#{resp.workItemResponse.wiResponseId}').trigger('change'); 
  38. }
  39. });
  40. $('##{resp.workItemResponse.wiResponseId}').keyup(function(){
  41. var text = this.value;
  42. if(text == '' || text.length == 0){
  43. $('.autoComplete#{resp.workItemResponse.wiResponseId}').attr('value', "");
  44. $('.autoComplete#{resp.workItemResponse.wiResponseId}').trigger('change');
  45. }
  46. });
  47. }); // on Ends

  48. var textElem;
  49. $(document).on('paste','##{resp.workItemResponse.wiResponseId}',function() {
  50. textElem = this;
  51. setTimeout(invokeOnPaste , 100); 
  52. });  

  53. function invokeOnPaste(){
  54. var text = $(textElem).val();
  55. if(text.length == 14){ 
  56. $('.autoComplete#{resp.workItemResponse.wiResponseId}').attr('value', text);
  57. $('.autoComplete#{resp.workItemResponse.wiResponseId}').trigger('change'); 
  58. } else if(text.length != 0){
  59. $('##{resp.workItemResponse.wiResponseId}').trigger('search','autocomplete');
  60. }
  61. });
  62. </script>