我正在使用Google在文本框上放置AutoComplete,它实际上正在工作,选择位置并将它们填充到文本框中。
问题是我只想填写选择名称 - 而不是自动完成列表产生的列表中的全名+地址格式。我似乎无法找到一种方法来覆盖文本框中的内容。
var $name = $("#txtName");
$name.focus();
var autocomplete = new google.maps.places.Autocomplete($name[0]);
google.maps.event.addListener(autocomplete, 'place_changed', function () {
var place = autocomplete.getPlace();
// explicitly update model
// but doesn't display in UI
$scope.locationData.Name = place.name;
// explicitly update the input box - doesn't update UI
$name.val(place.name);
return false; // doesn't work - updates UI
});
基本上我想做的是自己接管输入框文本分配,自己完成任务并强制自动完成不设置文本框值。
这可能吗?
答案 0 :(得分:1)
设置一个短暂的延迟值。
$('#NameBox').on('blur change', function () { $(this).val(place.name).off('blur change'); });
setTimeout(function () { $('#NameBox').val(place.name); }, 150);
使用.off()
允许用户根据需要编辑名称。如果您希望仅允许地方API名称删除.off()
。