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



我成功地使用了Loqate地址验证控件,并将其地址结果筛选到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时调用的.dedestroy((方法应该删除控件,我尝试将其设置为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() };    
}

最新更新