Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
  • Sign Up

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>

 

Link to post
Share on other sites

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

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

Link to post
Share on other sites
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> 

 

Link to post
Share on other sites

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 } ?>

 

 

 

Link to post
Share on other sites
2 часа назад, fanatic сказал:

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


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

Edited by Honor357
Link to post
Share on other sites

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
Link to post
Share on other sites
1 час назад, Honor357 сказал:

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

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

Link to post
Share on other sites
2 hours ago, Honor357 said:


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

Серьезно?:)

 

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

Link to post
Share on other sites
6 часов назад, Gorman сказал:

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

image.png.03c85598e35796032f4e4881ec202f1c.png

 

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

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

Edited by Honor357
Link to post
Share on other sites

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

 

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

Link to post
Share on other sites

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

select[name=\'shipping_method\']

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

Link to post
Share on other sites
5 минут назад, Gorman сказал:

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

не угадал:-)

Link to post
Share on other sites
Только что, fanatic сказал:

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


select[name=\'shipping_method\']

 

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

Link to post
Share on other sites

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

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

 

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

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

Link to post
Share on other sites

10 minutes ago, fanatic said:

не угадал:-)

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

 

9 minutes ago, Honor357 said:

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

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

Edited by Gorman
Link to post
Share on other sites
9 минут назад, Gorman сказал:

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

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

 

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

Link to post
Share on other sites

 

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

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

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

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

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

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

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

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

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

 

Link to post
Share on other sites
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 } ?>

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

Link to post
Share on other sites

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

Link to post
Share on other sites
5 минут назад, AWARO сказал:

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

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

Link to post
Share on other sites

Да причем тут легкие пути, если клиенту не нужно это упрощение зачем ему платить то.
Просто чекбокс на выпадающий список изменить

Link to post
Share on other sites

54 minutes ago, Honor357 said:

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

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

Link to post
Share on other sites
3 минуты назад, Gorman сказал:

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

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

Link to post
Share on other sites

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

Link to post
Share on other sites
3 минуты назад, Gorman сказал:

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

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

Link to post
Share on other sites

Guest
This topic is now closed to further replies.
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.