private:koding:hostcms:modules:shop:cart:custom_selects

Решение для кастомных селектов выбора локации в корзине

Во фронтенде некоторых сайтов используются нестандартные стилизованные выпадающие списки, как правило с ними возникает проблема, когда содержимое таких выпадающих списком обновляется динамически. Часто этими выпадающими списками становятся элементы ввода для выбора страны, области, города и района в корзине. Если к этим спискам применяется какая-то библиотека для их стилизации, то стандартные методы по обновлению этих элементов из файла main.js перестают работать, вернее они работают как и прежде, но нестандартные выпадающие списки отказываются отображать корректные данные.

Здесь может пригодиться следующее решение. Необходимо переопределить метод $.clientSelectOptionsCallback, который объявляется в файле main.js, для этого ниже подключения этого файла необходимо подключить JS-файл со следующим содержимым:

$.extend({
	clientSelectOptionsCallback: function(data, status, jqXHR) {
			$.loadingScreen('hide');
 
			jQuery(this).empty();
			for (var key in data)
			{
				jQuery(this).append(jQuery('<option>').attr('value', key.substr(1)).text(data[key]));
			}
 
			/**
			* Обновляем списки городов
			* 
			* @author Maxim Zasorin, KAD Systems (©) 2017	
			* @date 10-01-2017	
			* Начало >>
			*/
			jQuery(this)
				.selectbox('detach')
				.selectbox('attach');
			/**
			* << Конец 
			* @author Maxim Zasorin, KAD Systems (©) 2017	
			* @date 10-01-2017
			*/
		},
});

При этом внутри авторских комментариев необходимо записать верное действие для обновления списков, выше приведен пример для обновления списков с использованием библиотеки Selectbox 0.2, очень старой и давно неподдерживаемой, но отчего-то встречавшейся в 2 разных проектах.

Страницу создал Максим Засорин 10.01.17 в 15:49

private/koding/hostcms/modules/shop/cart/custom_selects.txt · Last modified: 27.06.17 в 15:19 by maximzasorin_gmail.com