1

现在,当我单击该位置时,自动完成框工作得很好,但是当我按下时,突出显示我想去的位置,然后按 Enter,它只是回到地图的主位置。对此有何见解?我在initialize()中调用了这个函数。我不知道我可能做错了什么。这只是一个谷歌api错误吗?如果是这样,关于如何解决它的任何见解?

function setupAutoComplete() {
    var defaultBounds = new google.maps.LatLngBounds(
        new google.maps.LatLng(-90, -180),
        new google.maps.LatLng(90, 180));

    var input = document.getElementById('placeSearch');
    var options = {
        bounds: defaultBounds,
        types: ['(regions)']
    };
    autocomplete = new google.maps.places.Autocomplete(input, options);

    google.maps.event.addListener(autocomplete, 'place_changed', function() {
        alert('hi'); 
        removeAllOverlays();
        var place = autocomplete.getPlace();
        var mapCenter = place.geometry.location;
        var colLat = mapCenter.lat() - (halfPoints)*latSeparation;
        var colLng = mapCenter.lng() - (halfPoints)*lngSeparation;
        var tempStart = new google.maps.LatLng(colLat, colLng);
        map.setCenter(mapCenter);
        pointArray[0][0] = tempStart;
        reService();
        mapSearch();
        drawBounds();
    });
}

非常感谢!

4

2 回答 2

0

我猜input#placeSearch是放在一个<form>.

当您按 [ENTER] 时提交表单。

您可以删除周围的表单或通过添加以下内容取消提交:

onsubmit="return false"

...到表单元素。

于 2012-07-11T11:18:05.997 回答
0

我刚刚遇到了这个问题并进行了以下操作,因为我确实想在稍后阶段提交表单。此代码来自谷歌群组

var input = document.getElementById('create-location');
var options = {
    //types: ['(cities)'],
};

autocomplete = new google.maps.places.Autocomplete(input, options);
google.maps.event.addDomListener(input, 'keydown', function(e) { 
    if (e.keyCode == 13) 
    { 
        if (e.preventDefault) 
        { 
            e.preventDefault(); 
        } 
        else 
        { 
            // Since the google event handler framework does not handle  early IE versions, we have to do it by our self. :-( 
            e.cancelBubble = true; 
            e.returnValue = false; 
        } 
    } 
}); 
于 2013-04-23T12:16:51.303 回答