Добрый день, на сайте установлено определение местоположения по IP, при заходе на сайт выскакивает окно в котором нужно подтвердить автоматически определенное местоположение, если нет то предоставляется выбор из различных вариантов.
При оформлении заказа в компонент bitrix:sale.order.ajax в поле местоположение автоматически записываются данные, которые определены автоматически, даже если было выбран пользовательский вариант. Подскажите как заменить его на выбранное пользователем.
В примере, который располагается по указанной вами ссылке, есть ошибка. Вот в коде указал место, куда написано вставлять в примере и куда можно вставлять
Код
init: function(options)
{
var ctx = this;
this.options = options;
window.submitFormProxy = BX.proxy(function(){
ctx.submitFormProxy.apply(ctx, arguments);
}, this);
//в примере написано вставлять сюда, но тут работать не будте
BX(function(){
ctx.initDeferredControl();
//можно вставить сюда
});
ошибку выдает из-за того, что у массива properties еще не инициализировано свойство control. Control инициализируется в функции ctx.initDeferredControl();, которая вызывается по событию onload. Следовательно, разместить код можно либо туда, где я обозначил в коде комментом "//можно вставить сюда", либо можно просто сделать отдельную функцию в этом js-классе:
Код
changeLoc: function(loc_id){
BX.fireEvent(BX('bx-soa-region').querySelector('.bx-soa-editstep'), 'click');
var ctx = this;
for(k in ctx.properties){
if(ctx.properties[k].type == "LOCATION"){
var location_prop = ctx.properties[k];
ctx.properties[location_prop.id].control.setValueByLocationId(loc_id);
}
}
},
и вызывать ее откуда угодно по событию (например, клику) или загрузке страницы