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

时间:2010-01-13 07:59:41

标签: javascript jquery events copy-paste

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

粘贴事件完成并且实际填充了字段后,有没有办法检查字段的值?我想要实际的字段值,而不是clipboardData,因为我知道这是一个仅限IE的功能。

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

1 个答案:

答案 0 :(得分:16)

事实证明,一个合适的解决方案是将回调包装在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,它在整个来源中使用了这种技术。