autocomplete - 使用鼠标粘贴未激活 Google 的自动完成功能

标签 autocomplete mouse paste

Google autocomplete API似乎没有通过使用鼠标将内容粘贴到文本输入中来激活。如果完全涉及键盘,它可以正常工作,但不能只涉及鼠标。

但是,我确实注意到,在您将内容粘贴到文本输入中后,它几乎可以通过任何按键激活(经过测试的右箭头键、结束键、空格)。

你可以在他们的 autocomplete demo 上复制它地点。

这是一个错误吗?还是按照设计?如果按照设计,如何应用解决方法?
到目前为止,我已将此作为解决方法,但似乎没有模拟按键事件有效。

$('.txtLocation').bind("paste", function (e)
{
    $('.txtLocation').focus();
    var e = jQuery.Event("keydown");
    e.keyCode = 39; //39=Arrow Right
    $('.txtLocation').trigger(e);
});

最佳答案

似乎这不仅会影响上下文菜单粘贴,还会影响浏览器菜单栏中的 Edit|Paste 以及 iOS 粘贴功能。我开了一个 bug with Google .您可能希望对该错误报告“加星标”以获取更新。

我找到了一种解决方法,虽然有点小技巧,但似乎可以解决问题。如果您存储粘贴的值,请将焦点切换到不同的字段,在 Autocomplete 字段中设置值,最后将焦点重新放在 Autocomplete 字段上,事情或多或少按预期工作。此外,您必须在 setTimeout() 中执行此操作回调 - 延迟时间似乎根本无关紧要,但是如果您只是内联执行此操作,您将看不到预期的结果。

这是我上面描述的代码示例:

$("#address_field").on("paste", googleMapsAutocompletePasteBugFix);

googleMapsAutocompletePasteBugFix = function() {
    return setTimeout(function() {
        var field, val;
        field = $("#address_field");
        val = field.val();
        $("#price").focus();
        field.val(val);
        return field.focus();
    }, 1);
};

最后 focus()是可选的,但与您只是自动跳到下一个字段相比,UI 没有那么令人惊讶。

关于autocomplete - 使用鼠标粘贴未激活 Google 的自动完成功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13325690/

相关文章:

windows - 让 Linux shell 脚本将字符串填充到 Windows 用户的复制/粘贴缓冲区中

bash - 遍历 bash 中的值对

python - Django Grappelli 在内联管理中添加自动完成查找

javascript - 当鼠标悬停在页面加载时的框上时,停止 jQuery 运行

c# - Wpf MVVM 如何处理 ViewModel 中的 TextBox "paste event"

linux - VMWare Mavericks 中的跳跃、生涩、不稳定的鼠标

c++ - 如何将光标移动到 C++ 中最后打开的窗口(可能是弹出窗口)

javascript - 无法将对象数组映射到 jQuery 自动完成中

c - 如何在telnet客户端实现tab补全

autocomplete - gnuplot 中的历史自动完成