NopCommerce: Подстановка города.

В недавнем посте я приводил пример импорта областей России в CMS NopCommerce.
Так же, как и в Википедии, у меня в списке областей присутствуют города Москва, Санкт-Петербург и Севастополь.
Это выглядит логичным, но порождает небольшую проблему интерфейса: при выборе города Москва поле «город» остается пустым и требуется доввести туда город.
Исправить эту мелкую ошибку достаточно просто небольшим дописыванием на JavaScript. В файлы _CreateOrUpdateAddress.cshtml и _CreateOrUpdateAddress.Mobile.cshtml надо внести следующее изменение:

<script type="text/javascript">
$(function () {

	$("#@Html.FieldIdFor(model => model.CountryId)").change(function () {
		var selectedItem = $(this).val();
		var ddlStates = $("#@Html.FieldIdFor(model => model.StateProvinceId)");
		var statesProgress = $("#states-loading-progress");
		statesProgress.show();
		$.ajax({
			cache: false,
			type: "GET",
			url: "@(Url.RouteUrl("GetStatesByCountryId"))",
			data: { "countryId": selectedItem, "addEmptyStateIfRequired": "true" },
			success: function (data) {
				ddlStates.html('');
				$.each(data, function (id, option) {
					ddlStates.append($('<option></option>').val(option.id).html(option.name));
				});
				statesProgress.hide();
			},
			error: function (xhr, ajaxOptions, thrownError) {
				alert('Failed to retrieve states.');
				statesProgress.hide();
			}
		});
// Начало добавления
		
		var StateProvinceText = $("#Address_CountryId option:selected").text();
		if(!StateProvinceText)  {
			var StateProvinceText = $("#NewAddress_CountryId option:selected").text();
		}
		
		if (StateProvinceText == 'Россия' ) {
			$('#Address_City').attr('value', 'Москва');
			$('#NewAddress_City').attr('value', 'Москва');
		}
		if (StateProvinceText == 'Russia' ) {
			$('#Address_City').attr('value', 'Moscow');
			$('#NewAddress_City').attr('value', 'Moscow');
		}
	});

	$("#@Html.FieldIdFor(model => model.StateProvinceId)").change(function () {
		var StateProvinceText = $("#Address_StateProvinceId option:selected").text().replace("г. ", "");
		if(!StateProvinceText)  {
			var StateProvinceText = $("#NewAddress_StateProvinceId option:selected").text().replace("г. ", "");
		}

		if (StateProvinceText == 'Москва' || 
			StateProvinceText == 'Санкт-Петербург' ||
			StateProvinceText == 'Севастополь' || 
			StateProvinceText == 'Moscow' || 
			StateProvinceText == 'Saint Petersburg' || 
			StateProvinceText == 'Sevastopol') {
				$('#Address_City').attr('value', StateProvinceText);
				$('#NewAddress_City').attr('value', StateProvinceText);
		}
// Конец добавления 
	});
});
</script>

В первой половине добавленного кода производится установка города по умолчанию (Москва)

0 комментариев

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.