Jump to content

Количество товара в корзине Select заменить на Input


Recommended Posts

  • 4 months later...

Сделал так заменил в шаблоне cart.tpl

	{* Количество *}
<td class="amount">
	<select name="amounts[{$purchase->variant->id}]" onchange="document.cart.submit();">
		{section name=amounts start=1 loop=$purchase->variant->stock+1 step=1}
		<option value="{$smarty.section.amounts.index}" {if $purchase->amount==$smarty.section.amounts.index}selected{/if}>{$smarty.section.amounts.index} {$settings->units}</option>
		{/section}
	</select>
</td>


на

{* Количество *}	<td class="amount">        <input class="input_sm" type="text" name="amounts[{$purchase->variant->id}]" onchange="document.cart.submit();" value="{$purchase->amount}">        </td>

Больше, вроде, ничего не менял.
Пока полет нормальный :)
Link to post
Share on other sites
  • 3 weeks later...

Привет! Ребята есть вопрос! Есть какие либо идеи поповоду того что бы цена менялась до нажатия энтр! тоесть когда в инпут только загнал 2 или 3,,,  сразу же подщитовалась бы цена,  реально такое?

Спасибо!

Link to post
Share on other sites

реально, делали многие такое. в свойства инпата вводишь onchange="название функции" и функцию обновления собственно. и всё :)

Link to post
Share on other sites

{* Количество *}

    <td class="amount">
        <input class="input_sm" type="text" name="amounts[{$purchase->variant->id}]" onchange="document.cart.submit();" value="{$purchase->amount}">
        <input class="bolwe" type="hidden" value="{($purchase->variant->stock)}">
     </td>


    {* Цена *}
    <td class="pricee">
        {($purchase->variant->price*$purchase->amount)}
    </td>
 
Link to post
Share on other sites

вариант на jquery )  

  $('input.input_sm').keyup(function () {    

        $('.pricee').html($('.price').html() * $('input.input_sm').attr('value'));

        });

Обновление по какой-то причине не происходит (только по нажатию Enter). Ваш код не изменял, прописал в точности как в комментариях. Поможете?

Link to post
Share on other sites

Обновление по какой-то причине не происходит (только по нажатию Enter). Ваш код не изменял, прописал в точности как в комментариях. Поможете?

 ДаваЙ!  надо бы глянуть твой карт тпл!

Link to post
Share on other sites

Ребята у меня вот такая незадача! я все сделал без обновления, НО , у меня в корзине ввод количества идет через input  и когда я ввел количество ничего не поменялось но когда кликаю мышкой за пределами  inputa только тут работает Ajax

 

Вот код помогите ПОЖАЛУЙСТА кто шарит !

 

{literal}
<script type="text/javascript">
function update_cart(variant_id,amount)
{
    $.ajax({
        url: "ajax/cart_update.php",
        data: {'variant_id':variant_id,'amount':amount},
        success: function(data){
        if(data){
            $('#cart_informer').html(data.informer);
            $('#total_products').html(data.total_products);
            $('#total_price').html(data.total_price);
            $('#total_cost_'+variant_id).html(data.total_cost);
        }
        }
    });

}
</script>
{/literal}


    {* Количество *}
    <td class="amount">
            <input class="k" type="text" name="amounts[{$purchase->variant->id}]" onchange="update_cart('{$purchase->variant->id}',$(this).val());" value="{$purchase->amount}">
        </td>

    {* Цена *}
    <td class="pricee" id="total_cost_{$purchase->variant->id}">
        {($purchase->variant->price*$purchase->amount)}
    </td>
 
Link to post
Share on other sites

А он так и должен работать... А как по другому? Если надо набрать 20, то он что, должен срабатывать после двойки? :-) 

Хотелось бы получить динамический пересчёт по keyup... Это было бы здорово. :)

Link to post
Share on other sites

В принципе, можно добавить кнопку "Обновить корзину" или перед иконкой удаления вставить что-то типа этого:     . Только вот незадача: скрипт срабатывает на клике в любом месте после изменения значения в input, а нужно чтобы срабатывал по конкретному запросу. Как сделать?

Link to post
Share on other sites
  • 1 year later...

 

вариант на jquery )  

 

  $('input.input_sm').keyup(function () {    
        $('.pricee').html($('.price').html() * $('input.input_sm').attr('value'));
        });
 

Куда вот это надо вставить?

Link to post
Share on other sites
  • 1 year later...

а если этот вариант допилить? рипал с одного сайта

что-то мешает блин (или вывод цены не так идёт c пробелами, что в итоге выдает NaN, или выбор доставки не так подтягивает данные - Uncaught ReferenceError: select_delivery_method is not defined)

 

{literal}<script>
function amChange(id, action)
{
    var value = $('#cnt_'+id).val()-0;
    if(isNaN(value))
      value=0;
    if(action == 'minus')
    {
        if(value == 0)
          {
           $('#'+id).val(value);
           return;
          }
        value--;
    }
    else if(action == 'plus')
        value++;
    $('#cnt_'+id).val(value);
    $.post('index.php', {vid:id, amount:$('#cnt_'+id).val()});
    var price = $('#price_'+id).text()-0;
 var sum=price*value;
    $('#summ_'+id).html('<b>'+sum.toFixed(2)+'</b>');
    var total = 0;
    var summ;
    $('[id^="summ_"]').each(function()
                            {
                            total+=($(this).text()-0);
                            });
    $('#total_summ').text(total.toFixed(2));
    select_delivery_method($('[id^=delivery_radio_]:checked').val());
}
</script>{/literal}

<a href="javascript:amChange('{$purchase->variant->id}','minus')" class="plus-minus">-</a> 
<input id="cnt_{$purchase->variant->id}" name="amount" type="text" value="1" maxlength="2" class="tovar_input" onChange="amChange({$purchase->variant->id}, 'set')"/>
<a href="javascript:amChange('{$purchase->variant->id}','plus')" class="plus-minus">+</a>
 

 

Edited by Vanger
Link to post
Share on other sites
  • 1 year later...

 

Сделал так заменил в шаблоне cart.tpl

{* Количество *}
	<td class="amount">
		<select name="amounts[{$purchase->variant->id}]" onchange="document.cart.submit();">
			{section name=amounts start=1 loop=$purchase->variant->stock+1 step=1}
			<option value="{$smarty.section.amounts.index}" {if $purchase->amount==$smarty.section.amounts.index}selected{/if}>{$smarty.section.amounts.index} {$settings->units}</option>
			{/section}
		</select>
	</td>

на

{* Количество *}
	<td class="amount">
        <input class="input_sm" type="text" name="amounts[{$purchase->variant->id}]" onchange="document.cart.submit();" value="{$purchase->amount}">
        </td>

Больше, вроде, ничего не менял.

Пока полет нормальный :)

 

Отлично работает, подскажите как сделать изменение количества с кнопками  +  - ?

 

<input type=button value="–">

<input class="input_sm" type="text" name="amounts[{$purchase->variant->id}]" onchange="document.cart.submit();" value="{$purchase->amount}">

<input type=button value="+">

 

куда копать?

 

 

 

 

 

 

Link to post
Share on other sites

Копать однозначно в сторону джаваскрипта))

Если у вас получается менять значение, но при этом не сабмитится форма - копайте в сторону .trigger('change')

Link to post
Share on other sites
  • 2 weeks later...

Копать однозначно в сторону джаваскрипта))

Если у вас получается менять значение, но при этом не сабмитится форма - копайте в сторону .trigger('change')

 

решил с + / - таким образом, кому надо решение:)

 

 

cart.tpl

 

<span class="minus">-</span>
<input class="value" type="text" name="amounts[{$purchase->variant->id}]" value="{$purchase->amount}"  onchange="document.cart.submit();" data-ratio="1" >
<span class="plus">+</span>                  
 
     <script type="text/javascript" >
        $(document).ready(function() {
            $('.minus').click(function () {
                var $input = $(this).parent().find('input.value');
                var count = parseInt($input.val()) - 1;
                count = count < 1 ? 1 : count;
                $input.val(count);
                $input.change();
                return false;
            });
            $('.plus').click(function () {
                var $input = $(this).parent().find('input.value');
                $input.val(parseInt($input.val()) + 1);
                $input.change();
                return false;
            });
        }); </script>

 

 

 

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...