Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Передать адрес ПВЗ из виджета Grastin (https://javascript.ru/forum/dom-window/77349-peredat-adres-pvz-iz-vidzheta-grastin.html)

Oleg0 21.04.2019 23:06

Передать адрес ПВЗ из виджета Grastin
 
Добрый день!

Такой вопрос. Есть виджет с адресами пунктов выдачи заказов (ПВЗ) и ценой доставки в них. Я встроил его на страницу корзины магазина. И теперь как-то нужно передать данные выбранного ПВЗ и цены в текстовое поле
<input type="text" maxlength="128" name="submitted[_adres_dost]" id="edit-submitted--adres-dost" size="60" value="" class="form-text">


На странице виджета написано "При выборе варианта доставки или точки самовывоза клиентом данные будут приходить в функцию window.grastinPvzWidgetCallback." Который имеет примерно такой вид:

{"deliveryType":"pvz","partnerId":"grastin","curre ntId":"eda593a7-0b36-11e4-b6f4-00155d030401","pvzData":{"title":"МСК-02, Щелковская","name":"г. Москва, м. Щелковская, ТЦ «Вектор», ул. 9-я парковая вл. 61а стр. 1, 2 этаж, павильон 16"},"cityTo":"МОСКВА","cityFrom":"МОСК А","cost":155,"weight":4000,"assessedValue":0,"k o":0}


Я попробовал написать так:

<script type="text/javascript">
$(document).ready(function () {
  window.grastinPvzWidgetCallback = function (data) {
        $('#edit-submitted--adres-dost').text(data.pvzData.name);
        console.log(data);
  }
});
</script>


Но, поле при выборе ПВЗ не заполняется. Подскажите, пожалуйста, как правильно написать? И имеет ли значение, в какой последовательности друг за другом идут текстовое поле, код виджета и мой код?

Malleys 21.04.2019 23:39

Цитата:

Сообщение от Oleg0
Grastin

Этот код не работает внутри iframe.

Цитата:

Сообщение от Oleg0
И имеет ли значение, в какой последовательности друг за другом идут текстовое поле, код виджета и мой код?

Нет!

Цитата:

Сообщение от Oleg0
$(document).ready(function () {

Достаточно дать определение функции!
<script>
	
	function grastinPvzWidgetCallback(data) {
		console.log(data);
		$('#edit-submitted--adres-dost').text(data.pvzData.name);
	}

</script>

Oleg0 22.04.2019 07:31

Что-то не работает :(
Вот, посмотрите, пожалуйста тестовую страницу https://cartin.ru/node/5896
Нужно выбрать "Покупка в магазине...", и снизу появится виджет Грастина, а снизу строка с адресом, которая должна заполняться при выборе какого-нибудь пункта самовывоза на карте.

Malleys 22.04.2019 09:46

Цитата:

Сообщение от Oleg0
Что-то не работает

Работает! Так у вас там текстовое поле... Замените метод text на val

function grastinPvzWidgetCallback(data) {
	console.log(data);
	$('#edit-submitted--adres-dost').val(data.pvzData.name);
}


С предотвращением возникновения ошибки

function grastinPvzWidgetCallback(data) {
	console.log(data);
	$('#edit-submitted--adres-dost').val("pvzData" in data ? data.pvzData.name : "");
}

Oleg0 22.04.2019 10:55

Спасибо огромное!


Часовой пояс GMT +3, время: 18:06.