更改输入时删除内容

Remove contents when input has changed

本文关键字:删除 输入      更新时间:2023-09-26

这是我的代码:http://jsfiddle.net/spadez/6v3kbLbk/7/

var placeSearch, autocomplete;
var componentForm = {
    route: 'long_name',
    locality: 'long_name',
    administrative_area_level_1: 'long_name',
    country: 'long_name',
    postal_code: 'short_name'
};
function initialize() {
    autocomplete = new google.maps.places.Autocomplete(
    (document.getElementById('autocomplete')), {
        types: ['geocode']
    });
    google.maps.event.addListener(autocomplete, 'place_changed', function () {
        fillInAddress();
    });
}
function fillInAddress() {
    var place = autocomplete.getPlace();
    for (var component in componentForm) {
        document.getElementById(component).value = '';
        document.getElementById(component).disabled = false;
    }
    for (var i = 0; i < place.address_components.length; i++) {
        var addressType = place.address_components[i].types[0];
        if (componentForm[addressType]) {
            var val = place.address_components[i][componentForm[addressType]];
            document.getElementById(addressType).value = val;
        }
    }
}

使用谷歌自动建议,我能够填充返回信息的字段。但是,当发生以下情况时,我遇到了问题:

用户在地址的一部分中键入单击自动完成(清除字段)用户删除或修改当前输入Uuser输入新输入,但不点击自动完成

这会将旧值保留在自动完成字段中。我需要的是检查字段中的内容是否已更改,如果有,请删除带有红色边框的字段中的内容。

谁能告诉我这是怎么做到的?我的猜测是这样的:

 $('#autocomplete').on('input', function() {
     // do something });

您需要手动存储旧值。您可以使用 javascript 对象来存储每个文本框的值:

function onChangeTest(textbox) {
    alert("Value is " + textbox.value + "'n" + "Old Value is " + textbox.oldvalue);
}
<input class="input hidden" id="country" disabled="true" onfocus="this.oldvalue = this.value;" onchange="onChangeTest(this);this.oldvalue = this.value;">

演示