我发现当使用鼠标粘贴文本(即Hello
)时,以下函数将抛出一个空的弹出窗口:
$('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 :(得分:11)
您可以使用oninput
事件,现代浏览器支持此方法
http://jsfiddle.net/pxfunc/KDLjf/
$('input').bind('input', function(e) {
console.log($(this).val());
});
答案 1 :(得分:1)
$('input:text').bind('paste', function() {
alert($(this).val());
});
答案 2 :(得分:0)
尝试此操作以获取正在粘贴的数据:
$("input:text").bind('paste', function(e) {
var text = e.event;
alert(text);
});
需要超时才能更新dom,因此该值实际上在输入字段中。您还可以使用更改事件来检查输入框是否已更新http://api.jquery.com/change
答案 3 :(得分:0)
我不认为波纹管代码在IE8上有效,因为在执行alert()时输入值没有改变。
$('input').bind('input paste', function(e) {
alert($(this).val());
});
在Firefox和Chrome上,它运行正常。