javascript - 如何在粘贴事件期间获取字段的值?

标签 javascript jquery events copy-paste

我有一个文本字段,我将 paste 事件绑定(bind)到使用 JQuery。当我第一次将某些内容粘贴到表单字段并记录其 val() 时,它返回一个空字符串。同样,如果我再次粘贴到字段中,它会返回粘贴前的值。本质上我有一个竞争条件或排序问题,因为没有更好的术语。在粘贴事件完成之前,表单字段似乎不会更新。

在粘贴事件完成并实际填充该字段后, 是否有任何方法可以检查该字段的值?我想要实际的字段值,而不是剪贴板数据,因为我知道这是 IE 独有的功能。

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

最佳答案

事实证明,一个不错的解决方案是将回调包装在 setTimeout() 中,延迟 0 毫秒,以使其异步。

我的新代码是:

var urlField = $('#url');
urlField.bind('paste', function(e) {
    setTimeout(function() {
        alert(urlField.val());
    }, 0); // note the 0 milliseconds
});

感谢DigitalBush's Masked Input Plugin , 它在整个源代码中都使用了这种技术。

关于javascript - 如何在粘贴事件期间获取字段的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2055224/

相关文章:

javascript - 我想根据调用的函数来更改图像的鼠标悬停和鼠标悬停效果

javascript - 如何在jqm的 ListView 中拖放li?

jquery - 了解 jQuery AJAX 事件 - success 和 ajaxSuccess

javascript - 重新加载商店会删除过滤器

javascript - 为什么文字处理不起作用?

jquery - jqGrid 出现“无法获取属性 'Id' 的值”错误

c# - 如何在 MVC4 中进行 ajax 调用

asp.net-mvc - ASP.NET MVC PostAuthorizeRequest(和其他事件)未触发

events - 如何在 Flutter 上实现事件监听器或委托(delegate)

javascript - 尝试让一个对象识别其父对象,而不将父对象传递到子对象的实例中