7

マウスでテキスト入力にコンテンツを貼り付けても、Google オートコンプリート APIが有効化されていないようです。キーボードが関係していれば問題なく動作しますが、マウスだけでは問題ありません。

ただし、コンテンツをテキスト入力に貼り付けた後、ほとんどすべてのキーを押すとアクティブになることに気付きました (テスト済みの右矢印キー、終了キー、スペース)。

こちらのオートコンプリート デモサイトで再現できます。

これはバグですか?または設計どおりですか?設計どおりの場合、回避策を適用する方法は? これまでのところ、これを回避策として使用していますが、シミュレートされたキープレス イベントは機能していないようです。

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

2 に答える 2

6

これは、コンテキストメニューの貼り付けだけでなく、ブラウザのメニューバーからの編集|貼り付けやiOSの貼り付け機能にも影響を与えるようです。Googleでバグを開きました。そのバグレポートに「スター」を付けて、更新をキャッチすることをお勧めします。

少しハックしながら、問題を解決するように見える回避策を見つけました。貼り付けた値を保存する場合は、別のフィールドにフォーカスを切り替え、オートコンプリートフィールドに値を設定し、最後にオートコンプリートフィールドにフォーカスを戻します。また、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は、次のフィールドに自動的にスキップした場合よりも少し驚くことではありません。

于 2012-12-07T17:54:45.753 に答える