jquery如何获取粘贴的内容
我在输入中捕获粘贴的文本时遇到一些麻烦:
$('#myid').on('paste',function(){ console.log($('#myid').val()); });
console.log显示:
default
我如何catch
粘贴的文本并准备使用?
现代浏览器现在支持input
事件,该事件将在粘贴内容后触发
$('#myid').on('input', function() { console.log($('#myid').val()); });
粘贴到输入时,在值有更新时间之前触发paste
事件。
解决此问题的一种方法是推迟获取值,直到输入有时间更新:
$('#myid').on('paste', function() { setTimeout(function () { console.log($('#myid').val()); }, 100); });
通过访问event.clipboardData
,还可以直接从剪贴板获取数据,而不是从输入值获取event.clipboardData
,但是这种技术是实验性的,并非在所有浏览器中都支持,并且在我看来比使用input
事件更加hacky,或者即使是简单的超时。
接受的答案实际上是hacky和丑陋,似乎经常建议stackoverflow上的粘贴事件。 我认为更好的方法就是这样做
$('#someInput').bind('paste', function(e) { var data = e.originalEvent.clipboardData.getData('Text'); //IE9 Equivalent ==> window.clipboardData.getData("Text"); });
试试这个或添加一个timeOut:
$('#myid').on('paste',function(){ console.log(this.value); });