微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

更改 Loqate 地址验证控制的国家/地区

如何解决更改 Loqate 地址验证控制的国家/地区

我成功地使用了 Loqate Address Verfication 控件,并将其地址结果过滤到在 select 控件中选择的单个国家/地区。

但是,当 select 中的国家/地区代码发生​​更改时,我无法更改 Loqate 地址服务中的国家/地区过滤器以使用更新后的值。

var addressControl;
var avOptions = { suppressAutocomplete: false,setCountryByIP: false };

$(function () {
    addressControl = initialiseAddressValidation();
});

$("#CountryCode").change(function () {
            
    if (addressControl) {
        addressControl.destroy();
        addressControl = null;
    }            

    addressControl = initialiseAddressValidation();

});


function initialiseAddressValidation() {

    avOptions.key = $("#avKey").val();        
    avOptions.countries = { codesList: $("#CountryCode").val() };
    
    //other config truncated
    
}

Loqate 的文档建议我在更改 select调用.destroy() 方法应该删除控件,我尝试将其设置为 null,然后再使用新的国家/地区代码值,但它返回的地址结果仍然是原始国家/地区在加载时初始化。

有谁知道如何在不完全重新加载页面的情况下为 Loqate 地址验证器设置新的国家/地区过滤器?


我的工作解决方案,基于@SlapdashFox 的宝贵帮助。这样做是为了避免在每次更改国家/地区时都必须完全重新创建控制

$("#CountryCode").change(function () {                
    if (addressControl) {
        addressControl.options.search.countries = $("#CountryCode").val();
    } else {
        addressControl = initialiseAddressValidation();
    }
});

解决方法

看起来您在这里更改了错误的值,您想更改选项对象中的 search.countries 属性。

在上面的例子中,你可以这样做:

function initialiseAddressValidation() {
    avOptions.key = $("#avKey").val();        
    avOptions.search = { countries: $("#CountryCode").val() };    
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。