2011-06-18 37 views
7

我發現用鼠標粘貼文本(即Hello)時,下面的函數將拋出一個空彈出:是否可以在不使用setTimeout()函數的情況下粘貼文本?

$('input:text').onpaste = function() 
{ 
    alert($('input:text').val()); 
}); 

的事情是,當被解僱的onpaste事件,文字不但實際上粘貼到輸入字段(至少這是我的猜測)。因此,改變功能:

$('input:text').onpaste = function() 
{ 
    setTimeout(function() 
    { 
     alert($('input:text').val() 
    }, 100); 
} 

給出了顯示當粘貼到輸入字段與文本Hello彈出一個正確的結果。

現在我的問題:是否有可能在不使用setTimeout()函數的情況下捕獲粘貼的文本?這個解決方法似乎很髒,所以我很樂意不必使用它。

kkthxbai xon1c

+0

http://stackoverflow.com/a/19269040/530153 –

回答

0

試試這個讓被粘貼的數據:需要

$("input:text").bind('paste', function(e) { 
    var text = e.event; 
    alert(text); 
}); 

超時得到更新DOM所以價值實際上是在輸入欄。你也可以使用change事件以檢查輸入框會更新http://api.jquery.com/change

+3

我收到警報中的「未定義」,你能提供一個例子嗎? – Diego

1
$('input:text').bind('paste', function() { 
    alert($(this).val()); 
}); 
+0

此代碼不起作用,因爲粘貼的值尚未在輸入中設置。我已經使用Chrome進行了測試。 –

0

我不認爲以下代碼對IE8有效,因爲alert()執行時輸入值沒有改變。

$('input').bind('input paste', function(e) { 
    alert($(this).val()); 
}); 

在Firefox和Chrome上,它工作正常。

相關問題