2

我正在寻找一种方法来清除 geocomplete(版本 1.5.0)控件的结果。我尝试了这里提到的各种方法,但无济于事。

这个想法是当用户在输入商业名称后清除该字段时,我希望 geocomplete 也重置其“内部”。现在,尽管该字段清除了其输入,但只要它失去焦点(用户单击页面上的其他位置),geocomplete 就会放回输入的地址

<html>
....
<label for="geocomplete">Adress</label><input id="geocomplete" type="search" placeholder="Type you Address here" tabindex="1"/>
....
</html>

<javascript>
...
 $("#geocomplete").geocomplete({
    map: ".map_canvas",

    mapOptions: {
     zoom: 14,
     scrollwheel: false,
     mapTypeId: "roadmap",
     streetViewControl:false,
     mapTypeControl:false
    },

    types: ["establishment"],
  }).bind("geocode:result", function(event, result) {

     // do stuff here
    });

  //
  $('#geocomplete').on('input', function() {

   // Field empty... clear content
   if($("#geocomplete").val() == "")
   {
    // Clear

   //$('#geocomplete').data().autocomplete.term = null;
   //$("#geocomplete").geocomplete().autocomplete()[0].value = "";

   }
  });  

  ....
</javascript>
4

1 回答 1

0

我只需在输入字段上注册一个事件侦听器(只要用户在我的情况下键入)并清除我的所有字段以响应它。注意:我还在最后调用 geocomplete('initMap') 来重置地图(我猜也是 geocomplete 的内部结构)。抱歉它是 CoffeeScript,但你应该明白:

@query_field.bind('input', => @resetLocation())

...

resetLocation: ->
  @reference_field.val(null)
  @city_field.val(null)
  @formatted_address_field.val(null)

  $( '#venue_details [name=name]' ).text('')
  $( '#venue_details [name=formatted_address]' ).text('')
  @query_field.removeClass( 'approved' )
  @query_field.geocomplete( 'initMap' )
于 2015-01-16T19:11:21.350 回答