- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我已将 Google Maps Javascript API V3 中的 google.maps.places.Autocomplete 添加到基本搜索表单中。我正在尝试找到一种可靠的方法来检测用户是从自动完成列表中选择了一个项目(使用鼠标或键盘)还是提交了自由格式的文本。
代码:http://jsfiddle.net/2rhL3cyk/1/
我正在针对以下基本场景进行测试,每个场景都应导致提交表单。如果用户选择了自动完成项,locMatch
应该为真。
只有情况 1、3 和 4 按预期工作。
在 #2 中,onSubmit 在 place_changed 之前被触发,因此在提交表单之前它没有机会设置 locMatch。手动触发 place_changed 没有帮助,因为即使输入字段具有正确的文本,autocomplete.getPlace() 仍然未定义,直到表单提交触发。我能够像这样强制它使用可怕的 setTimeout hack:
$('#loc_search').submit(function (e) {
setTimeout(function () {
console.log('submit for real! locMatch:', locMatch);
$(this).submit();
}, 150);
});
我真的很想找到一个更明智的方法来解决这个问题。我想超时值可能取决于用户的机器规范,我不希望任何不必要的延迟。
在#5 中,它在按下回车后根本不调用 place_changed。我再次尝试在提交处理程序中手动触发 place_changed 事件,但这没有任何效果,因为 getPlace() 返回先前选择的值,即使用户在输入字段中输入了它。解决此问题的一种方法是在更改时重置 locMatches,但这会破坏下面的 #6。
$('#location').change(function() {
locMatch = false;
});
在 #6 中,locMatch 从上一次点击开始仍然为真,因此它确实给出了预期的结果,但从技术上讲它并不正确,因为 place_changed 在表单提交后仍然被触发。上面针对 #5 的修复打破了这种情况,但是上面的 setTimeout 方法再次修复了它。
我一整天都在为这件事绞尽脑汁,如有任何建议,我们将不胜感激。谢谢!
最佳答案
这里有完全相同的问题。自动完成库不提供除 place_changed 之外的任何其他事件。也没有状态属性,例如request_pending。
这里有来自 mmalone 的“hack”:Google Autocomplete - enter to select对我来说效果很好。
关于javascript - Google Places Autocomplete place_changed 事件在表单提交后按回车键触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27072844/
当我单击下拉列表中的某个项目时,我遇到了 place_changed 事件未触发的问题。如果我右键单击一个项目,它就会触发。如果我左键单击,它有时会触发,但只有大约 10% 的时间。 我查看了是否有任
我在 Google Places API 方面遇到了问题。我已经使用 API key 设置了所有内容,列表/建议运行良好,但是当我选择一个建议时 place_changed 事件不会被触发。 检查 f
我在我的 ASP.NET MVC 项目上使用谷歌地图 API v3。 我想向用户展示一张 map ,用户可以在上面搜索某个地方,然后选择那个地方,然后提交(非常简单)。 在这种情况下一切正常,除了当用
JS var location_input = document.getElementById('location'); var autocomplete = new google.maps.plac
我已将 Google Maps Javascript API V3 中的 google.maps.places.Autocomplete 添加到基本搜索表单中。我正在尝试找到一种可靠的方法来检测用户是
我有一个当前在 place_changed 上正确触发的应用。 但是,我希望分支搜索在用户选择自动完成条目时以及在他们在没有自动完成帮助的情况下自行输入文本时表现不同。 我应该使用什么样的事件监听器来
我目前正在开发 DHL 的商店查找应用程序,可以在 storefinder.hashfff.com/app/index.html 查看该应用程序。 在这个应用程序中,我使用的是 angular-goo
我正在尝试使用 Google Places API 中的自动完成功能。我已经设置并运行了自动完成功能,但我想添加一个监听器,以便我可以在其他地方使用 PlacesResult 中的信息。为了测试该功能
我也试过触发事件 google.maps.event.trigger(autocomplete, 'place_changed'); 但是在我手动更改城市之前,autocomplete.getPlac
我是一名优秀的程序员,十分优秀!