Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Radio кнопки заменить на выпадающий список


Recommended Posts

Нужно изменить кнопки radio в шаге выбора доставки, на выпадающий список или выпадающий список из этих же кнопок.
Отвечаю сразу на вопрос зачем, много вариантов доставки по городу, что бы это не выглядело громоздко хочу спрятать, пункты просто клоны стандартного сделанные через модуль, но в котором нет настройки как и отдельного файла tpl 


код из файла shipping_method.tpl, подскажите как изменить код что бы решить проблемку

<div class="radio">
  <label>
    <?php if ($quote['code'] == $code || !$code) { ?>
    <?php $code = $quote['code']; ?>
    <input type="radio" name="shipping_method" value="<?php echo $quote['code']; ?>" checked="checked" />
    <?php } else { ?>
    <input type="radio" name="shipping_method" value="<?php echo $quote['code']; ?>" />
    <?php } ?>
    <?php echo $quote['title']; ?> - <?php echo $quote['text']; ?></label>
</div>

 

Надіслати
Поділитися на інших сайтах


Пока оставлю мануальчик по выпадающим спискам - http://htmlbook.ru/html/select

По суди нужно радиокнопки заменить на селект с двумя option, подставив нужные значения. Почитайте для начала мануал, может станет все сразу ясно. Если вдруг что - спрашивайте. 

Надіслати
Поділитися на інших сайтах

6 часов назад, Gorman сказал:

Пока оставлю мануальчик по выпадающим спискам - http://htmlbook.ru/html/select

По суди нужно радиокнопки заменить на селект с двумя option, подставив нужные значения. Почитайте для начала мануал, может станет все сразу ясно. Если вдруг что - спрашивайте. 

Читал и пробовал, я не настолько 0

вместо одного списка с несколькими выпадающими элементами, получилось 3 с одним
вот такая штука вышла, укажите где не так и как исправить

<select class="radio55">
  <label>
    <?php if ($quote['code'] == $code || !$code) { ?>
    <?php $code = $quote['code']; ?>
    <option> <?php echo $quote['code'] ?> </option>
    <?php } else { ?>
    <option value=""><?php echo $quote['code']; ?> </option>
    <?php } ?>
    <?php echo $quote['title']; ?> - <?php echo $quote['text']; ?></label>
</select> 

 

Надіслати
Поділитися на інших сайтах


2 часа назад, Honor357 сказал:

вместо одного списка с несколькими выпадающими элементами, получилось 3

ну да. а что вы ожидали?  приведенный вами код выполняется в цикле

как-то так

<?php if (!$shipping_method['error']) { ?>
<select name="shipping_method">
<?php foreach ($shipping_method['quote'] as $quote) { ?>
<?php if ($quote['code'] == $code || !$code) { ?>
    <?php $code = $quote['code']; ?>
    <option value="<?php echo $quote['code']; ?>" selected="selected"> <?php echo $quote['title']; ?> - <?php echo $quote['text']; ?> </option>
    <?php } else { ?>
    <option value="<?php echo $quote['code']; ?>"> <?php echo $quote['title']; ?> - <?php echo $quote['text']; ?> </option>
    <?php } ?>
<?php } ?>
</select>
<?php } else { ?>
<div class="alert alert-danger"><?php echo $shipping_method['error']; ?></div>
<?php } ?>

 

 

 

Надіслати
Поділитися на інших сайтах

2 часа назад, fanatic сказал:

ну да. а что вы ожидали?  приведенный вами код выполняется в цикле


не силен в вебе, пока что. Больше в с++ и делфи
Выпадающий список работает все круто, но ошибку выдает при переходе на следующий шаг, что не выбрана доставка, может и тут подскажете?)

Змінено користувачем Honor357
Надіслати
Поділитися на інших сайтах


1 час назад, Honor357 сказал:

но ошибку выдает при переходе на следующий шаг,

конечно, потому что

data: $('#collapse-shipping-method select[type=\'radio\']:checked, #collapse-shipping-method textarea'),

в вашем случае нужно

data: $('#collapse-shipping-method select[name=\'shipping_method\'], #collapse-shipping-method textarea'),

файл   catalog/view/theme/ваша тема/template/checkout/checkout.tpl

строка  708

$(document).delegate('#button-shipping-method', 'click', function() {
    $.ajax({
        url: 'index.php?route=checkout/shipping_method/save',
        type: 'post',
//вот оно где
        data: $('#collapse-shipping-method select[name=\'shipping_method\'], #collapse-shipping-method textarea'),
        dataType: 'json',
        beforeSend: function() {
        	$('#button-shipping-method').button('loading');
		},
        success: function(json) {
            $('.alert, .text-danger').remove();

            if (json['redirect']) {
                location = json['redirect'];
            } else if (json['error']) {
                $('#button-shipping-method').button('reset');

                if (json['error']['warning']) {
                    $('#collapse-shipping-method .panel-body').prepend('<div class="alert alert-danger">' + json['error']['warning'] + '<button type="button" class="close" data-dismiss="alert">×</button></div>');
                }
            } else {
                $.ajax({
                    url: 'index.php?route=checkout/payment_method',
                    dataType: 'html',
                    complete: function() {
                        $('#button-shipping-method').button('reset');
                    },
                    success: function(html) {
                        $('#collapse-payment-method .panel-body').html(html);

						$('#collapse-payment-method').parent().find('.panel-heading .panel-title').html('<a href="#collapse-payment-method" data-toggle="collapse" data-parent="#accordion" class="accordion-toggle"><?php echo $text_checkout_payment_method; ?> <i class="fa fa-caret-down"></i></a>');

						$('a[href=\'#collapse-payment-method\']').trigger('click');

						$('#collapse-checkout-confirm').parent().find('.panel-heading .panel-title').html('<?php echo $text_checkout_confirm; ?>');
                    },
                    error: function(xhr, ajaxOptions, thrownError) {
                        alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
                    }
                });
            }
        },
        error: function(xhr, ajaxOptions, thrownError) {
            alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
        }
    });
});

 

  • +1 2
Надіслати
Поділитися на інших сайтах

1 час назад, Honor357 сказал:

Больше в с++ и делфи

ну да, там же нет циклов:-)

Надіслати
Поділитися на інших сайтах

2 hours ago, Honor357 said:


не силен в вебе, пока что. Больше в с++ и делфи
 

Серьезно?:)

 

Фанатик все написал, в общем-то, пишите если будут затыки.

Надіслати
Поділитися на інших сайтах

6 часов назад, Gorman сказал:

Фанатик все написал, в общем-то, пишите если будут затыки.

image.png.03c85598e35796032f4e4881ec202f1c.png

 

Выбираем в верхнем селекте, пункт, а на 6ом шаге показывает что выбран пункт из нижнего

При этом если выбрать из второго то этот выбор, попадает в 6 шаг

Змінено користувачем Honor357
Надіслати
Поділитися на інших сайтах


Вы на локалке делаете, или можно глянуть сайт?

 

Если на локалке, или глянуть нельзя - скопируйте сюда элемент селект с отладчика, скорее всего value проставлено неверно. 

Надіслати
Поділитися на інших сайтах

у вас 2 селекта а в в js  берется значение из определенного списка

select[name=\'shipping_method\']

предположу, вы еще и спискам дали одинаковые имена

Надіслати
Поділитися на інших сайтах

5 минут назад, Gorman сказал:

скорее всего value проставлено неверно. 

не угадал:-)

Надіслати
Поділитися на інших сайтах

Только что, fanatic сказал:

у вас 2 селекта а в в js  берется значение из определенного списка


select[name=\'shipping_method\']

 

селекта два все верно, обьединить или сделать чекбокс с селектом ведь можно?

Надіслати
Поділитися на інших сайтах


5 минут назад, Gorman сказал:

Вы на локалке делаете, или можно глянуть сайт?

 

Если на локалке, или глянуть нельзя - скопируйте сюда элемент селект с отладчика, скорее всего value проставлено неверно. 

нет, стоит на хостинге
manualart.ru

Надіслати
Поділитися на інших сайтах


10 minutes ago, fanatic said:

не угадал:-)

Похоже на то :)

 

9 minutes ago, Honor357 said:

нет, стоит на хостинге
manualart.ru

Сейчас я увидел только один селект, видимо убрали пока второй? Но судя по симптомам, действительно у селектов одинаковый name, js берет последний и выводит в поле. У вас какая цель этих двух селектов, что хотите в идеале получить на 6ом этапе?

Змінено користувачем Gorman
Надіслати
Поділитися на інших сайтах

9 минут назад, Gorman сказал:

Сейчас я увидел только один селект, видимо убрали пока второй? Но судя по симптомам, действительно у селектов одинаковый name, js берет последний и выводит в поле. У вас какая цель этих двух селектов, что хотите в идеале получить на 6ом этапе?

Нет, второй селект это почта россии, модуль который расчитывает стоимость и срок доставки, если данные были заполнены криво он не выходит

 

Суть в том что первый это доставка по городу в котором магазин находится ( районы) ,второй это модуль почты, скорее всего будет третий от сдэка, суть в том что клиент выбрал тот вариант доставки который нужен ему

Надіслати
Поділитися на інших сайтах


 

21 минуту назад, Honor357 сказал:

обьединить или сделать чекбокс с селектом ведь можно?

вынесите   select из цикла

в цикле формируйте только option

13 минут назад, Gorman сказал:

 у селектов одинаковый name,

даже если дать разные, все равно этого мало. нужно тогда тут подправить

7 часов назад, fanatic сказал:

data: $('#collapse-shipping-method select[name=\'shipping_method\'], #collapse-shipping-method textarea'),

 

Надіслати
Поділитися на інших сайтах

14 минут назад, fanatic сказал:

вынесите   select из цикла

<?php if ($shipping_methods) { ?>
<p><?php echo $text_shipping_method; ?></p>
<select name="shipping_method">
<?php foreach ($shipping_methods as $shipping_method) { ?>
<p><strong><?php echo $shipping_method['title']; ?></strong></p>
<?php if (!$shipping_method['error']) { ?>
<?php foreach ($shipping_method['quote'] as $quote) { ?>
<?php if ($quote['code'] == $code || !$code) { ?>
    <?php $code = $quote['code']; ?>
    <option value="<?php echo $quote['code']; ?>" selected="selected"> <?php echo $quote['title']; ?> - <?php echo $quote['text']; ?> </option>
    <?php } else { ?>
    <option value="<?php echo $quote['code']; ?>"> <?php echo $quote['title']; ?> - <?php echo $quote['text']; ?> </option>
    <?php } ?>
<?php } ?>
</select>
<?php } else { ?>
<div class="alert alert-danger"><?php echo $shipping_method['error']; ?></div>
<?php } ?>

Попробовал вот так, остался один селект, в котором только способы доставки по городу(

Надіслати
Поділитися на інших сайтах


@Honor357 в симпле ж есть вся эта каша, хочешь радио, хочешь выпадающий 450р сиди и настраивай..

Надіслати
Поділитися на інших сайтах


5 минут назад, AWARO сказал:

в симпле ж есть вся эта каша,

мы не ищем легких путей:-)

Надіслати
Поділитися на інших сайтах

54 minutes ago, Honor357 said:

Да причем тут легкие пути, если клиенту не нужно это упрощение зачем ему платить то

Клиент всегда за что-то платит, за работу специалиста по "разработке" выпадающего списка или за подключение модуля. Имхо 450р - это даже не час работы, а пол часа. Сколько вы затратили?
Если для себя - то другое дело, разобраться всегда хорошо.

Надіслати
Поділитися на інших сайтах

3 минуты назад, Gorman сказал:

Клиент всегда за что-то платит, за работу специалиста по "разработке" выпадающего списка или за подключение модуля. Имхо 450р - это даже не час работы, а пол часа. Сколько вы затратили?
Если для себя - то другое дело, разобраться всегда хорошо.

Затратил больше не спорю, но для себя тоже интересно
как подправить до конца поскажете?

Надіслати
Поділитися на інших сайтах


3 минуты назад, Gorman сказал:

Честно - нужно лезть в js разбираться, по памяти не скажу. Фанатик может подскажет, если вдруг помнит.

Но ведь по идеи, если селект будет один то проблема решится?
так для развития, как сделать из них один большой селект?

Надіслати
Поділитися на інших сайтах


Гість
Ця тема закрита для публікації повідомлень.
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.