Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...

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


 Поделиться

Рекомендованные сообщения

Нужно изменить кнопки 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р - это даже не час работы, а пол часа. Сколько вы затратили?
Если для себя - то другое дело, разобраться всегда хорошо.

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

Ссылка на комментарий
Поделиться на других сайтах


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

Ссылка на комментарий
Поделиться на других сайтах

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

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

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

Ссылка на комментарий
Поделиться на других сайтах


Гость
Эта тема закрыта для дальнейших сообщений.
 Поделиться

  • Сейчас на странице   0 пользователей

    • Нет пользователей, просматривающих эту страницу.
×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.