Buckland
Писатель
- Регистрация
- 10 Сен 2017
- Сообщения
- 9
- Реакции
- 1
Сделал по вашей инструкции страна как выпадающий список выходит а область и город приходится писать вручную.То есть в область и город можно написать любой текст.Решение с выпадающим списком Стран, Областей и Городов для тех кто до сих пор не может понять проблему в шаблоне Вероника.
Я всё исправил. Работаем с файлом item-post.php
Заменить начиная с <!-- LOCATION --> до <!-- SELLER INFORMATION -->
Код:<!-- LOCATION --> <div class="box location"> <h2><?php _e('Location', 'veronika'); ?></h2> <?php $country = Country::newInstance()->listAll(); ?> <div class="row" <?php if(count($country) == 1) { ?><?php } ?>> <label for="countryId"><?php _e('Country', 'veronika'); ?></label> <?php ItemForm::country_select(Country::newInstance()->listAll(), $cookie_loc); ?> </div> <div class="row"> <label for="regionId"><?php _e('Region', 'veronika'); ?></label> <?php ItemForm::region_select($region_list, $cookie_loc); ?> </div> <div class="row"> <label for="city"><span><?php _e('City', 'veronika'); ?></span></label> <?php ItemForm::city_select($city_list, $cookie_loc); ?> </div> <div class="row"> <label for="address"><?php _e('Address', 'veronika'); ?></label> <?php ItemForm::address_text(osc_user()); ?> </div> </div>
Далее вставить в конец файла перед
<?php osc_current_web_theme_path('footer.php') ; ?>
Код:<script> $(document).ready(function(){ $("#countryId").live("change",function(){ var pk_c_code = $(this).val(); var url = '<?php echo osc_base_url(true)."?page=ajax&action=regions&countryId="; ?>' + pk_c_code; var result = ''; if(pk_c_code != '') { $("#regionId").attr('disabled',false); $("#uniform-regionId").removeClass('disabled'); $("#cityId").attr('disabled',true); $("#uniform-cityId").addClass('disabled'); $.ajax({ type: "POST", url: url, dataType: 'json', success: function(data){ var length = data.length; if(length > 0) { result += '<option value=""><?php echo osc_esc_js(__('Select a region', 'veronika')); ?></option>'; for(key in data) { result += '<option value="' + data[key].pk_i_id + '">' + data[key].s_name + '</option>'; } $("#region").before('<div class="selector" id="uniform-regionId"><span><?php echo osc_esc_js(__('Select a region', 'veronika')); ?></span><select name="regionId" id="regionId" ></select></div>'); $("#region").remove(); $("#city").before('<div class="selector" id="uniform-cityId"><span><?php echo osc_esc_js(__('Select a city', 'veronika')); ?></span><select name="cityId" id="cityId" ></select></div>'); $("#city").remove(); $("#regionId").val(""); $("#uniform-regionId").find('span').text('<?php echo osc_esc_js(__('Select a region', 'veronika')); ?>'); } else { $("#regionId").parent().before('<input placeholder="<?php echo osc_esc_js(__('Enter a region', 'veronika')); ?>" type="text" name="sRegion" id="region" />'); $("#regionId").parent().remove(); $("#cityId").parent().before('<input placeholder="<?php echo osc_esc_js(__('Enter a city', 'veronika')); ?>" type="text" name="sCity" id="city" />'); $("#cityId").parent().remove(); $("#city").val(''); } $("#regionId").html(result); $("#cityId").html('<option selected value=""><?php echo osc_esc_js(__('Select a city', 'veronika')); ?></option>'); $("#uniform-cityId").find('span').text('<?php echo osc_esc_js(__('Select a city', 'veronika')); ?>'); $("#cityId").attr('disabled',true); $("#uniform-cityId").addClass('disabled'); } }); } else { // add empty select $("#region").before('<div class="selector" id="uniform-regionId"><span><?php echo osc_esc_js(__('Select a region', 'veronika')); ?></span><select name="regionId" id="regionId" ><option value=""><?php echo osc_esc_js(__('Select a region', 'veronika')); ?></option></select></div>'); $("#region").remove(); $("#city").before('<div class="selector" id="uniform-cityId"><span><?php echo osc_esc_js(__('Select a city', 'veronika')); ?></span><select name="cityId" id="cityId" ><option value=""><?php echo osc_esc_js(__('Select a city', 'veronika')); ?></option></select></div>'); $("#city").remove(); if( $("#regionId").length > 0 ){ $("#regionId").html('<option value=""><?php echo osc_esc_js(__('Select a region', 'veronika')); ?></option>'); } else { $("#region").before('<div class="selector" id="uniform-regionId"><span><?php echo osc_esc_js(__('Select a region', 'veronika')); ?></span><select name="regionId" id="regionId" ><option value=""><?php echo osc_esc_js(__('Select a region', 'veronika')); ?></option></select></div>'); $("#region").remove(); } if( $("#cityId").length > 0 ){ $("#cityId").html('<option value=""><?php echo osc_esc_js(__('Выбрать город', 'veronika')); ?></option>'); } else { $("#city").parent().before('<div class="selector" id="uniform-cityId"><span><?php echo osc_esc_js(__('Select a city', 'veronika')); ?></span><select name="cityId" id="cityId" ><option value=""><?php echo osc_esc_js(__('Select a city', 'veronika')); ?></option></select></div>'); $("#city").parent().remove(); } $("#regionId").attr('disabled',true); $("#uniform-regionId").addClass('disabled'); $("#uniform-regionId").find('span').text('<?php echo osc_esc_js(__('Select a region', 'veronika')); ?>'); $("#cityId").attr('disabled',true); $("#uniform-cityId").addClass('disabled'); $("#uniform-cityId").find('span').text('<?php echo osc_esc_js(__('Select a city', 'veronika')); ?>'); } }); $("#regionId").live("change",function(){ var pk_c_code = $(this).val(); var url = '<?php echo osc_base_url(true)."?page=ajax&action=cities®ionId="; ?>' + pk_c_code; var result = ''; if(pk_c_code != '') { $("#cityId").attr('disabled',false); $("#uniform-cityId").removeClass('disabled'); $.ajax({ type: "POST", url: url, dataType: 'json', success: function(data){ var length = data.length; if(length > 0) { result += '<option selected value=""><?php echo osc_esc_js(__('Выбрать город', 'veronika')); ?></option>'; for(key in data) { result += '<option value="' + data[key].pk_i_id + '">' + data[key].s_name + '</option>'; } $("#city").before('<div class="selector" id="uniform-cityId"><select name="cityId" id="cityId" ></select></div>'); $("#city").remove(); $("#cityId").val(""); $("#uniform-cityId").find('span').text('<?php echo osc_esc_js(__('Select a city', 'veronika')); ?>'); } else { result += '<option value=""><?php echo osc_esc_js(__('No cities found', 'veronika')); ?></option>'; $("#cityId").parent().before('<input type="text" placeholder="<?php echo osc_esc_js(__('Enter a city', 'veronika')); ?>" name="sCity" id="city" />'); $("#cityId").parent().remove(); } $("#cityId").html(result); } }); } else { $("#cityId").attr('disabled',true); $("#uniform-cityId").addClass('disabled'); $("#uniform-cityId").find('span').text('<?php echo osc_esc_js(__('Select a city', 'veronika')); ?>'); } }); if( $("#regionId").attr('value') == "") { $("#cityId").attr('disabled',true); $("#city").attr('disabled',true); $("#uniform-cityId").addClass('disabled'); } if($("#countryId").length != 0) { if( $("#countryId").attr('value') == "") { $("#regionId").attr('disabled',true); $("#uniform-regionId").addClass('disabled'); } } $(".row").on('change', '#cityId, #regionId', function() { $(this).parent().find('span').text($(this).find("option:selected" ).text()); }); $('.add_item .seller_info.logged input#contactName, .add_item .seller_info.logged input#contactEmail').prop('disabled', true); });
Как сделать чтобы и область выпадал списком и чтобы только города относящие к выбранной области выпадали в списке?
(сам сделал выпадающий список, но там выходят все города и даже к которые не относятся к данной области)
Последнее редактирование: