2013-02-19 69 views
2

我們使用以下JQuery代碼(JSF)來調用Autocomplete。當用戶鍵入數據時,Everthing似乎可以正常工作,但用戶複製和粘貼Autocomplete時只能在第二次嘗試中使用。我在IE 8測試下面的代碼的任何輸入讚賞JQuery UI 1.8.23複製粘貼問題

<script type="text/javascript"> 
$(function() { 
    $(document).on('keyup.autocomplete','##{resp.workItemResponse.wiResponseId}', function() { 
     $('##{resp.workItemResponse.wiResponseId}').autocomplete({ 
      minLength: 3, 
      source: function(request, response){ 
       $.ajax({ 
        type: 'GET', 
        url: "/iaportal/autoCompleteServlet", 
        cache: false, 
        delay: 200, 
        data: { 
         'respId':'#{resp.workItemResponse.wiResponseId}', 
         'type': '#{autoCompleteType}', 
         'term':request.term 
        }, 
        contentType: "application/json; charset=utf-8", 
        dataType: "json", 
        success: function(data){ 
         response($.map(data.acctNum, function (item) { 
          return {         
           label: item.label, 
           value: item.label 
          } 
         })); 
        }, 
        error: function(message){ 
         alert("error "+message); 
        } 
       }); 
      }, 
      select: function(event, ui) { 
       var selectedObj = ui.item; 
       var text = selectedObj.value; 
       $('.autoComplete#{resp.workItemResponse.wiResponseId}').attr('value', text); 
       $('.autoComplete#{resp.workItemResponse.wiResponseId}').trigger('change'); 
      } 
     }); 
     $('##{resp.workItemResponse.wiResponseId}').keyup(function(){ 
      var text = this.value; 
      if(text == '' || text.length == 0){ 
       $('.autoComplete#{resp.workItemResponse.wiResponseId}').attr('value', ""); 
       $('.autoComplete#{resp.workItemResponse.wiResponseId}').trigger('change'); 
      } 
     }); 
    }); // on Ends 

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

    function invokeOnPaste(){ 
     var text = $(textElem).val(); 
     if(text.length == 14){ 
      $('.autoComplete#{resp.workItemResponse.wiResponseId}').attr('value', text); 
      $('.autoComplete#{resp.workItemResponse.wiResponseId}').trigger('change'); 
     } else if(text.length != 0){ 
      $('##{resp.workItemResponse.wiResponseId}').trigger('search','autocomplete'); 
     } 
    } 
}); 
</script> 

回答

0

剪貼板訪問是在Javascript中限制對於所有瀏覽器,除了IE瀏覽器(啓用了配置選項和Firefox。)您需要綁定到別的東西,像keyupCtrl+V粘貼。就我所知,綁定到上下文菜單是不可能的。

+0

謝謝Serj Sagan。我可以使用JQuery插件修復複製和粘貼問題(CTRL + V和鼠標上下文粘貼):https://gist.github.com/mkelly12/424774。我們希望這可以在IE8中運行,並且可以使用這個插件。我認爲這也適用於其他瀏覽器。 – JQueryJSF 2013-02-22 15:53:31

+0

是的,但它使用閃光燈在其他瀏覽器中完成 – 2013-02-22 17:13:00