2013-11-02 84 views
2

這可能看起來很愚蠢的問題,但我似乎無法弄清楚如何捕獲onPaste事件,並將它傳遞給一個函數來處理。捕獲onPaste並將事件傳遞給一個函數javascript/jQuery

$("input").on({ 
    'paste': function getdata(e) { 

    var value = getdata(); 
    alert("you pasted" + value); 
}, 
    'keyup': function getdata(e) { 

    var value = getdata(); 
    alert("you pasted" + value); 
} 

}); 


function getdata(e) { 
    if(window.clipboardData && window.clipboardData.getData) { 
     value = window.clipboardData.getData('Text'); 
    } else if (e.originalEvent.clipboardData && e.originalEvent.clipboardData.getData) { 
     value = e.originalEvent.clipboardData.getData('text/plain'); 
    } 

    return value; 

} 
+0

剛學到了一些關於將地圖傳遞給#on! – Kong

回答

3

你的問題是,你給你的事件處理程序的名稱:

$("input").on({ 
    'paste': function getdata(e) { 

    var value = getdata(); 
    alert("you pasted" + value); 
    .... 
}); 

你調用的事件處理getdata。當在函數內部調用getdata()時,它會再次運行事件處理程序。這顯然會導致無限循環。

刪除命名的函數表達式:其他

$("input").on({ 
    'paste': function (e) { 

    var value = getdata(e); 
    alert("you pasted" + value); 
    .... 
}); 

兩個更正你的代碼。

首先,您沒有在getdata中定義value。您需要啓動該功能var value;

其次,您不會將事件傳遞到getdata。您需要撥打電話getdata(e)

This fiddle顯示您的代碼完美工作。

+0

謝謝!不知道它就是這麼簡單! – bobbyjones

相關問題