Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 21.04.2019, 23:06
Интересующийся
Отправить личное сообщение для Oleg0 Посмотреть профиль Найти все сообщения от Oleg0
 
Регистрация: 07.04.2016
Сообщений: 28

Передать адрес ПВЗ из виджета 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>


Но, поле при выборе ПВЗ не заполняется. Подскажите, пожалуйста, как правильно написать? И имеет ли значение, в какой последовательности друг за другом идут текстовое поле, код виджета и мой код?
Ответить с цитированием
  #2 (permalink)  
Старый 21.04.2019, 23:39
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Сообщение от Oleg0
Grastin
Этот код не работает внутри iframe.

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

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

</script>
Ответить с цитированием
  #3 (permalink)  
Старый 22.04.2019, 07:31
Интересующийся
Отправить личное сообщение для Oleg0 Посмотреть профиль Найти все сообщения от Oleg0
 
Регистрация: 07.04.2016
Сообщений: 28

Что-то не работает
Вот, посмотрите, пожалуйста тестовую страницу https://cartin.ru/node/5896
Нужно выбрать "Покупка в магазине...", и снизу появится виджет Грастина, а снизу строка с адресом, которая должна заполняться при выборе какого-нибудь пункта самовывоза на карте.
Ответить с цитированием
  #4 (permalink)  
Старый 22.04.2019, 09:46
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Сообщение от 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 : "");
}
Ответить с цитированием
  #5 (permalink)  
Старый 22.04.2019, 10:55
Интересующийся
Отправить личное сообщение для Oleg0 Посмотреть профиль Найти все сообщения от Oleg0
 
Регистрация: 07.04.2016
Сообщений: 28

Спасибо огромное!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск