我正在使用谷歌地图自动完成脚本,它的工作正常,但如果用户没有从下拉列表中选择任何人,如何清除输入?
例如: 现在的情况: 用户输入“新建”并在列表中看到“纽约”,但不要选择它(点击输入之外的任何地方),现在intup的值为“新”。 我想要: 用户输入“新建”并在列表中看到“纽约”,但不要选择它(单击输入外的任何位置),现在intup具有空值,因为列表中没有任何内容未被选中。
我目前的代码:
<input id="autocomplete2" placeholder="Enter your address" onFocus="initAutocomplete2()" type="text">
<script>
function initAutocomplete2() {
autocomplete2 = new google.maps.places.Autocomplete(
/** @type {!HTMLInputElement} */(document.getElementById('autocomplete2')),
{types: ['(cities)']});
}
</script>
答案 0 :(得分:8)
您需要有一个变量来保存选择值的事实,然后当有人聚焦/模糊输入时 - 如果需要,重置输入的值。
以下是一个例子:
var selected = false;
function initAutocomplete2() {
autocomplete2 = new google.maps.places.Autocomplete(
/** @type {!HTMLInputElement} */(document.getElementById('autocomplete2')),
{types: ['(cities)']});
autocomplete2.addListener('place_changed', function() {
selected = true
});
}
$('#autocomplete2').on('focus', function() {
selected = false;
}).on('blur', function() {
if (!selected) {
$(this).val('');
}
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://maps.googleapis.com/maps/api/js?libraries=places"></script>
<input id="autocomplete2" placeholder="Enter your address" onFocus="initAutocomplete2()" type="text">
&#13;
答案 1 :(得分:0)
我找到了一种对我来说似乎更好的方式,你可以定义一个旧的价值&#34;只会改变&#34; place_changed&#34;打回来。 然后,&#34;模糊&#34;事件你应该用最后一个选择的值(或初始值)重新填充值。 这样,字段值是一致的,它是空的或有效的选择值。
oldaddress = $("input[name='address']").val();
$("input[name='address']").on('blur', function() {
$(this).val(oldaddress);
});
function initAutocomplete() { autocomplete = new google.maps.places.Autocomplete(document.getElementById('address'), { types: [(cities)] });
autocomplete.addListener('place_changed', fillInAddress);
}
function fillInAddress() {
var place = autocomplete.getPlace();
....
oldaddress = $("input[name='address']").val();
}