2010-02-09 61 views
1

我想掛鉤粘貼事件<input type="text">並強制將此文本粘貼到隱藏的textarea(然後我想解析textarea的文本並執行'從excel粘貼數據到gridview'操作)。例如:掛鉤粘貼事件隱藏文本區

$('#input1').bind('paste', function(e) { 
    // code do paste text to textarea instead of originally targeted input 
}); 

什麼是跨瀏覽器代碼而不是評論?

謝謝。

回答

3

當Ctrl和V鍵或Shift和Insert鍵關閉時,這個hacky解決方案會在textarea上觸發focus事件。 [是,它不爲文本菜單工作 - >過去]

$(document).ready(function(){ 
    var activeOnPaste = null; 
    $('#input1').keydown(function(e){ 
     var code = e.which || e.keyCode; 
     if((e.ctrlKey && code == 86) || (e.shiftKey && code == 45)){ 
      activeOnPaste = $(this); 
      $('#textarea').val('').focus(); 
     } 
    }); 
    $('#textarea').keyup(function(){ 
     if(activeOnPaste != null){ 
      $(activeOnPaste).focus(); 
      activeOnPaste = null; 
     } 
    }); 
}); 

代碼讓指針焦點上的文本區域時Ctrl鍵和V鍵是向下。在那一刻沒有文本被粘貼,在這個keydown函數被觸發後粘貼,所以粘貼的文本顯示在textarea中。之後,在關鍵文字區域,#input1將被重點關注。

在輸入時,我發現鍵盤粘貼和鼠標粘貼可能有一個解決方案,使用範圍。我也會嘗試一些...

+1

有趣的想法,謝謝。希望你也會發布鼠標粘貼解決方案。 – Roman 2010-02-09 21:10:56

0

您應該將函數綁定到onChange()事件的輸入字段,並在每次調用此函數時複製其內容,然後處理數據。如果您對「粘貼」內容特別感興趣(我不知道您在那裏做什麼,但通常這是一個壞概念的標誌,因爲在粘貼內容需要額外處理的情況下),您可以嘗試實施一個檢查輸入速度的計數器(例如,每秒超過xx個字符 - > PASTE-Eventcall)