4

我正在使用 Google Places Autocomplete API 和 jQuery。它的基本功能运行良好。我想做的是,如果有人在自动完成中键入了与我希望选择该项目并place_changed触发事件的选择之一完全相同的内容。这是因为我在需要触发的地方更改了侦听器中有一些逻辑。这个想法是,如果有人键入与自动完成选项之一完全相同的文本,那么它应该表现得好像有人单击了该选项。

这是我尝试过的,其中 userLocation 是输入:

$("#userLocation").keyup(function(e){
    //if the text is at least 4 chars long
    if($("#userLocation").val().length > 4)
    {
        //iterate through each of the autocomplete options
        $(".pac-item").each(function(){
            if($(this).text() == $("#userLocation").val() )
            {
                //does not do what I need it to
                $(this).trigger("place_changed");
            }
        });
    }
});

我也尝试过替换trigger("place_changed").trigger("click")但无济于事。

有没有人这样做过?任何人都可以建议另一种方法来尝试使这项工作吗?任何建议将不胜感激,谢谢!

4

2 回答 2

5

正如这里的答案所述:

您必须调用google.maps.event.trigger导致如下调用的函数。

$("#userLocation").keyup(function(e){
    //if the text is at least 4 chars long
    if($("#userLocation").val().length > 4)
    {
        //iterate through each of the autocomplete options
        $(".pac-item").each(function(){
            if($(this).text() == $("#userLocation").val() )
            {
                google.maps.event.trigger(autocomplete, 'place_changed');
            }
        });
    }
});

文档显示您还可以将参数传递trigger给将传递给“place_changed”事件的事件侦听器的函数。

于 2013-02-05T02:07:17.503 回答
0

您还可以尝试使用自动完成输入键事件并使用 javascript 触发。

请尝试以下代码。

//For Set Location pin point
var searchtext = "New York, NY";
var input = document.getElementById('pac-input');
$('#pac-input').val(searchtext);                        
setTimeout(function () {
google.maps.event.trigger(input, 'focus');
google.maps.event.trigger(input, 'keydown', { keyCode: 13 });                            
}, 10);
//End 
于 2017-02-07T06:00:59.837 回答