代码之家  ›  专栏  ›  技术社区  ›  Soviut

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

  •  8
  • Soviut  · 技术社区  · 15 年前

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

    有什么方法可以检查这个字段的值吗 之后 粘贴事件已完成,字段是否已实际填充?我需要的是实际的字段值,而不是剪贴板数据,因为我知道这只是一个IE特性。

    $('#url').bind('paste', function(e) {
        alert($(this).val());
    });
    
    1 回复  |  直到 15 年前
        1
  •  16
  •   Soviut    15 年前

    一个不错的解决方案是用 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 ,它在整个源代码中使用此技术。