Google的自动填充功能未通过鼠标粘贴激活

joh*_*eur 6 mouse autocomplete paste

谷歌的自动完成API似乎并没有粘贴内容与鼠标的文本输入被激活.如果完全涉及键盘,它可以正常工作,但不能只用鼠标.

但是,我注意到,在将内容粘贴到文本输入后,它几乎可以从任何按键激活(测试的右箭头键,结束键,空格).

你可以在他们的自动完成演示网站上进行重新调整.

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

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

Rya*_*osz 6

这似乎不仅会影响上下文菜单粘贴,还会影响浏览器菜单栏中的"编辑"|"粘贴"以及iOS粘贴功能.我已经向谷歌公开了一个错误.您可能希望"明星"该错误报告以捕获更新.

我找到了一个解决方法,虽然有点黑客,似乎解决了这个问题.如果存储粘贴的值,请将焦点切换到其他字段,在"自动填充"字段中设置值,最后重点关注"自动填充"字段,事情或多或少会按预期工作.此外,您必须在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);
};
Run Code Online (Sandbox Code Playgroud)

最后一个focus()是可选的,但是如果你只是自动跳到下一个字段,那么UI就不那么令人惊讶了.