javascript - 谷歌中的适当事件用鼠标放置自动完成选择

标签 javascript jquery ajax forms google-places-api

我正在使用谷歌的自动完成 api 就像在文档中一样并且它有效 美好的。 但是,每次更改时,我都会使用 ajax 提交一个表单。 它工作正常但是当我使用自动完成的位置时 鼠标(点击选择一个地方)。 它触发 onchange 并在设置位置之前提交表单。

如何阻止这种行为? 我的意思是在鼠标点击自动完成之后提交。

这是一个带有示例的 fiddle :http://jsfiddle.net/8GnZB/2/

     $(document).ready(function () {
         $location_input = $("#location");
         var options = {
             types: ['(cities)'],
             componentRestrictions: {
                 country: 'be'
             }
         };
         autocomplete = new 
google.maps.places.Autocomplete($location_input.get(0), options);
         $("#search_form input").change(function () {
             var data =  $("#search_form").serialize();
             /* Serialize form & send it to the search view */
             show_submit_data(data);
             return false;
         });
     });

     function show_submit_data(data) {
         $("#result").html(data);
     }

     <script type="text/javascript" 
src="https://maps.googleapis.com/maps/api/js?libraries=places&sensor=true"></script>
     <form id="search_form" action="" method="post" >location :
         <input id="location" name="location" type="text" />
         <br/>data:
         <input id="data" name="data" type="text" />
     </form>Sent data :
     <div id="result"></div>

到目前为止,我唯一设法解决的问题是 change() 事件超时,但有点难看。

最佳答案

要解决您的问题,您需要为您的输入绑定(bind)正确的事件,请记住库有自己的事件。

您正在使用的对象是自动完成的

autocomplete = new google.maps.places.Autocomplete($location_input.get(0), options); 

现在你可以绑定(bind)事件place_changed,它在你需要的时候触发,此时你可以控制任何你需要的。

google.maps.event.addListener(autocomplete, 'place_changed', function() {
    var data = $("#search_form").serialize();
    console.log('blah')
    show_submit_data(data);
});

这是一个活生生的例子 http://jsfiddle.net/8GnZB/7/

关于javascript - 谷歌中的适当事件用鼠标放置自动完成选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17153847/

相关文章:

javascript - 保存在 Canvas 上绘制的图像

php - 对 Ajax 脚本的任何更改都会产生 Uncaught TypeError

javascript - Kendo 网格取消导致删除行

jQuery 晚于窗口加载

javascript - 我需要在 URL 中使用 anchor (#) 来更新我的页面

javascript - 宾果游戏,麻烦减去,重置计数器跟踪方 block 点击

javascript - 使用适用于 Node JS 的 mongodb native 驱动程序记录所有查询

javascript - 为什么将变量(在对象范围之外)设置为等于对象方法会返回未定义的结果?

javascript - 添加CSS关键帧动画改变图像大小

javascript - jQuery ul 事件目标 - 我可以找到实际上是事件目标的 li 吗?