我正在使用JavaScript Google自动填充API v3。它工作正常,但我想知道是否有办法强制从自动完成选择,这是输入,不会接受任何自由形式的文本。我看了看文档,并没有看到这样的选择,但认为我只是为了保证安全。我敢肯定,我可以用一些JavaScript来解决这个问题,但是如果可用的话,更愿意使用已经构建的方法。谢谢!Google Places自动完成力量选择
回答
Google Places API目前不支持此功能。如果您认为这将是一个有用的功能,请提交Places API - Feature Request。
我遇到了同样的问题,下面是我提出的一个解决方法。这可以与诸如onchange或onkeyup等事件结合使用。希望能帮助到你!
//Arguments:
address - string containing the place that you want to validate
address_success_div - div object specifically used for displaying validation
function is_location_valid(address, address_success_div)
{
var geocoder = new google.maps.Geocoder();
geocoder.geocode({"address": address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK)
{
address_success_div.innerHTML = "SUCCESS";
}
else
{
address_success_div.innerHTML = "FAILURE";
}
});
}
其实,我们所做的是以下几点:
- 每次的位置从自动完成列表中选择;我们填充一些一些隐藏的字段来自JSON响应的字段(城市名称,国家名称,经度和纬度)
- 表单提交后,我们检查这些字段是否具有val如果他们不这样做,这意味着用户不是从列表中选择一个位置,他只是自己输入了一个值。
这不是以JS的方式解决问题,但它仍然有窍门就好!
<script src="http://maps.googleapis.com/maps/api/js?sensor=false&libraries=places"
type="text/javascript"></script>
<script>
var IsplaceChange = false;
$(document).ready(function() {
var input = document.getElementById('txtlocation');
var autocomplete = new google.maps.places.Autocomplete(input, { types: ['(cities)'] });
google.maps.event.addListener(autocomplete, 'place_changed', function() {
var place = autocomplete.getPlace();
IsplaceChange = true;
});
$("#txtlocation").keydown(function() {
IsplaceChange = false;
});
$("#btnsubmit").click(function() {
if (IsplaceChange == false) {
$("#txtlocation").val('');
alert("please Enter valid location");
}
else {
alert($("#txtlocation").val());
}
});
});
</script>
Hia的 我已经成功地做到这一点每个用户集中在输入字段时创建自动完成的对象,并检查它的值会在每次所迷离时间:
var autocompleteField;
var input = document.getElementById('YOUR_INPUT');
$('#YOUR_INPUT').focus(function(e){
if(autocompleteField){
autocompleteField=null;
}
autocompleteField = new google.maps.places.Autocomplete(input);
});
$('#YOUR_INPUT').blur(function(e){
var results = autocompleteField.getPlace();
if(!results){
$(this).attr('value','');
}
});
我解决了这个问题,结合了来自这里的几个不同答案的建议。用户输入地址的我的Textfield称为txtPlaces。这里是我的代码:
var pac_input = document.getElementById('txtPlaces');
(function pacSelectFirst(input) {
// store the original event binding function
var _addEventListener = (input.addEventListener) ? input.addEventListener : input.attachEvent;
function addEventListenerWrapper(type, listener) {
// Simulate a 'down arrow' keypress on hitting 'return' when no pac suggestion is selected,
// and then trigger the original listener.
if (type == "keydown") {
var orig_listener = listener;
listener = function(event) {
var suggestion_selected = $(".pac-item-selected").length > 0;
if ((event.which == 13 || event.which == 9) && !suggestion_selected) {
var simulated_downarrow = $.Event("keydown", {
keyCode: 40,
which: 40
});
orig_listener.apply(input, [simulated_downarrow]);
}
orig_listener.apply(input, [event]);
};
}
_addEventListener.apply(input, [type, listener]);
}
input.addEventListener = addEventListenerWrapper;
input.attachEvent = addEventListenerWrapper;
var autocomplete = new google.maps.places.Autocomplete(input);
})(pac_input);
$('#txtPlaces').blur(function(e){
selectFirstAddress(pac_input);
});
////Ensuring that only Google Maps adresses are inputted
function selectFirstAddress (input) {
google.maps.event.trigger(input, 'keydown', {keyCode:40});
google.maps.event.trigger(input, 'keydown', {keyCode:13});
}
这将正确地对Enter或Tab键以及用户选择另一个字段作出反应。希望这可以帮助!
WTF,人?!?!?谷歌通常没有正确的信息。不要将他们的自动完成API用于强制选择!这就是为什么一大堆网站不允许我使用他们的服务:我住的地方是谷歌把地址锁定的地方。我并不孤单。
如果您必须使用USPS地址验证 - 至少他们是最新的。理想情况下允许自动完成,但允许手动覆盖;不要为了我们这么多人而懒惰,让生活变得困难!
- 1. Google Places自动完成extjs4
- 2. ASP.NET中的Google Places自动完成
- 3. Google Places API自动完成错误Android
- 4. Selenium Google Places自动完成Java
- 5. 根据选定城市的Google Places自动完成
- 6. Google Places自动完成服务按国家/地区筛选
- 7. 选择自动完成框
- 8. 选择自动完成
- 9. Google Places自动完成对邻域的限制
- 10. 将Google Places自动完成API限制到特定国家
- 11. Google Places API自动完成功能显示“糟糕!出错了”。
- 12. 使用Google Places API以订阅形式自动完成输入
- 13. iOS上的Google Places API自动完成功能
- 14. Google Places API自动完成功能不起作用
- 15. Google地图/ Places Javascript API自动完成限制类型
- 16. 限制Google Places自动完成功能仅返回地址
- 17. 没有Google Places的自动完成中的当前位置?
- 18. Google Places API自动完成适用于Android Titanium
- 19. 如何在React Native Android中使用Google Places自动完成API?
- 20. 使用JQuery自动完成的力选择
- 21. Google maps Places API V3自动完成 - 在输入时选择第一个选项(并保持该方式)
- 22. 的CSS自动完成选择选项
- 23. 选择元素内的自动完成
- 24. 无法从Google地方选择自动完成
- 25. Google地图自动完成功能始终选择第一项
- 26. 如何使用Google的Places自动完成api在SugarCRM中创建一个自动完成的地址字段
- 27. 使用Rails自动完成并选择正确的自动完成
- 28. 从自动完成中选择事件
- 29. 自动完成强制选择
- 30. Netbeans的jQuery选择自动完成
我正在使用变通方法...相反,我使用自动完成预测API来默认选择第一个结果。 – nicolasbui
http://code.google.com/p/gmaps-api-issues/issues/detail?id=8456投票,如果您也受到影响。 –
不要这样做。这是一个可怕的想法,因为谷歌往往是错误的。例如,对于新道路,您将有一年的延迟,直到识别出正确的地址。见下面的答案。 – eraoul