选择地址后清除自动完成字段值

时间:2013-12-27 08:49:21

标签: jquery google-maps autocomplete

我正在尝试基于Google地图构建应用,并且我创建了一个自动填充字段,允许最终用户手动输入他的地址。

此外,我的应用程序要求行程的起始地址位于管理员边界预定义的范围内。

我喜欢做的是,当最终用户尝试输入起始行程地址,并且地址超出边界时,清除自动填充字段。

不幸的是,我无法清除这个领域。当控制台显示该字段的值为空时,浏览器仍然包含最后输入的地址。

我使用的代码如下:

//  Build a new AutoComplete object
autocomplete            =   new google.maps.places.Autocomplete(
    $addressField[0],    //  Set the address field
    {
        types   :   [
            'geocode'
        ],
        bounds  :   map.getBounds()
    }
);

//  Add an event listener for autocomplete object
google.maps.event.addListener(
    autocomplete,
    'place_changed',                //  And track the change event
    function()
    {
        var place           =   autocomplete.getPlace();
        var latLng          =   new google.maps.LatLng(place.geometry.location.lat(),   place.geometry.location.lng());
        var isWithinPolygon =   areaPolygon.containsLatLng(latLng);

        if(!isWithinPolygon)
        {
            // NOTE : I have also try the .val() method but with no effect.
            $addressField.attr('value', '').attr('data-lat',  '').attr('data-lng', '');
            console.warn('This address it is not located within the area boundaries');
        }
        else
        {
            $addressField.attr('data-lat',  place.geometry.location.lat()).attr('data-lng', place.geometry.location.lng());
        }
    }
);

最后,这是我的应用程序和控制台上的屏幕截图:

应用截图

enter image description here

元素检查

enter image description here

控制台消息

enter image description here

有人可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:4)

另外清除自动填充的place - 属性:

 autocomplete.set('place',void(0));