Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 25.02.2016, 20:07
Кандидат Javascript-наук
Отправить личное сообщение для ArsenInvoker Посмотреть профиль Найти все сообщения от ArsenInvoker
 
Регистрация: 06.03.2015
Сообщений: 116

Здравствуйте ребята давно у вас не был но я к вам с вопросом ))
Кароче тут такое дело написал скрипт плюс минус количества товара не как не могу запретить больше определенного количества так то оно работает но работает после второго нажатия вот код

<?php echo $header; ?>


<link rel="stylesheet" href="catalog/view/javascript/jquery/colorbox/colorbox.css?j2v=2.4.12"/>
<script type="text/javascript" src="catalog/view/javascript/jquery/colorbox/jquery.colorbox-min.js?j2v=2.4.12"></script>
<script type="text/javascript" src="catalog/view/javascript/jquery/colorbox/jquery.colorbox.js"></script>




<div class="hea_tit"><?php echo $heading_title; ?></div>
<div class="breadcrumb">
<?php foreach ($breadcrumbs as $breadcrumb) { ?>
<?php echo $breadcrumb['separator']; ?><a href="<?php echo $breadcrumb['href']; ?>"><?php echo $breadcrumb['text']; ?></a>
<?php } ?>
</div>



<?php echo $column_left; ?>

<?php echo $column_right; ?>

<div id="content">
<?php echo $content_top; ?>
<p class="serc_art"><?php echo $text_search; ?></p>







<?php if ($products) { ?>
<div class="product-filter">

<div class="filtr2">

<div class="f_manu">
<p>Производитель</p>
</div>



<div class="f_name">
<p>Наименование</p>
</div>

<div class="f_articl">
<p>Артикул</p>
</div>



<div class="f_nal">
<p>Нал</p>
</div>


<div class="f_sklad">
<p>Мин кол-во</p>
</div>


<div class="f_price">
<p>Цена</p>
</div>




<div class="f_kupit">
<p>Купить</p>
</div>


</div>









 


</div>
<div class="product-list">
<?php foreach ($products as $product) { ?>
<div class="p_list">


<div class="manufacturer">
<a onFocus="this.blur()" class="man_id" href="<?php echo $product['href']; ?>">
<?php echo $product['manufacturer']; ?>&nbsp
</a>
</div>

<div class="name"><?php echo $product['name']; ?></div>
<div class="model">

<?php if (!$logged) { ?>
<?php echo $product['model1']; ?>	
<?php } else { ?>
<?php echo $product['model']; ?>

<?php } ?>





</div>
<div class="quantity">
<div id="quant">
<?php echo $product['quantity']; ?>
</div>
<span>шт</span>
</div>



<div class="min_quan">
<span>по</span>
<div id="min_quan">
<?php echo $product['minimum']; ?>
</div>
<span>шт</span>
</div>

<?php if ($product['price']) { ?>
<?php } ?>
<?php if ($product['rating']) { ?>
<div class="rating"><img src="catalog/view/theme/default/image/stars-<?php echo $product['rating']; ?>.png" alt="<?php echo $product['reviews']; ?>" /></div>
<?php } ?>
<div class="price">
<?php if (!$product['special']) { ?>
<?php echo $product['price']; ?>
<?php } else { ?>
<span class="price-old"><?php echo $product['price']; ?></span> <span class="price-new"><?php echo $product['special']; ?></span>
<?php } ?>
<?php if ($product['tax']) { ?>
<br />
<span class="price-tax"><?php echo $text_tax; ?> <?php echo $product['tax']; ?></span>
<?php } ?>
</div>
<div class = "quan_col">
<span class="my_minus">-</span>
<td class="quantity"><input class="quant" type="text" name="quantity"  id="quantity" value="<?php echo $product['minimum']; ?>"  size="1" readonly="readonly"/></td>
<span class="my_plus">+</span>







<?php if (!$logged) { ?>

<div class="cart">
<input onFocus="this.blur()" type="button" value="В Корзину" class="button_cart1" />
</div>

<?php } else { ?>

<div class="cart">
<input onFocus="this.blur()" type="button" value="В Корзину" onclick="addToCart('<?php echo $product['product_id']; ?>',  $(this).parent().parent().parent().find('#quantity').val());" class="button_cart" />
</div>

<?php } ?>






</div>
<div id="else_log" >
    <?php if (!$logged) { ?>
    <?php } else { ?>
<div class="wishlist"><a onclick="addToWishList('<?php echo $product['product_id']; ?>');"><?php echo $button_wishlist; ?></a></div>
<div class="compare"><a onclick="addToCompare('<?php echo $product['product_id']; ?>');"><?php echo $button_compare; ?></a></div>
    <?php } ?>
  </div>
</div>
<?php } ?>
</div>

<?php } else { ?>
<div class="content">
<div class="art_now">
<?php echo $text_empty; ?>
</div>
</div>

<?php }?>
<?php echo $content_bottom; ?>
</div>



<script type="text/javascript">
function display(view) {
if (view == 'list') {
$('.product-list > div').each(function(index, element) {
html  = '<div class="right">';
html += '</div>';
html += '<div class="manufacturer">' + $(element).find('.manufacturer').html() + '</div>';
html += '<div class="name">' + $(element).find('.name').html() + '</div>';
html += '<div class="model">' + $(element).find('.model').html() + '</div>';
html += '<div class="quantity">' + $(element).find('.quantity').html() + '</div>';
html += '<div class="min_quan">' + $(element).find('.min_quan').html() + '</div>';

var price = $(element).find('.price').html();
if (price != null) {
html += '<div class="price">' + price  + '</div>';
}

html += '<div class="quan_col">' + $(element).find('.quan_col').html() + '</div>';
html += '<div class="wishlist">' + $(element).find('.wishlist').html() + '</div>';
html += '<div class="compare">' + $(element).find('.compare').html() + '</div>';


var rating = $(element).find('.rating').html();
if (rating != null) {
html += '<div class="rating">' + rating + '</div>';
}
})
}
}
</script>



<script>
$(function ()
{
$(".man_id").colorbox({
iframe:true, innerWidth:400, innerHeight:500

});

$(".button_cart1").colorbox({
html:'<div class="warn_cart">Использовать корзину можно только</br> после авторизации !!</div><iframe src="index.php?route=account/login"  style="width: 300px; height: 400px;"></iframe>'
});	
})
</script>

 
<?php echo $footer; ?>


$(document).ready(function() {
	

	


    $('.my_minus').click(function () {
        var quantity = $(this).parent().parent().find('#quant').html();
        var min_quan = $(this).parent().parent().find('#min_quan').html();
        var input_val = $(this).parent().find('.quant').val();
        var input = $(this).parent().find('.quant');
		
		if(min_quan < Number(input_val)) {
			
			input.val(Number(input_val) - Number(min_quan))
		}
		
		else if(Number(input_val) < min_quan) {
		 input.val(min_quan);
		 
		}
		
		
    });
  

    $('.my_plus').click(function () {

        var quantity = $(this).parent().parent().find('#quant').html();
        var min_quan = $(this).parent().parent().find('#min_quan').html();
        var input_val = $(this).parent().find('.quant').val();
        var input = $(this).parent().find('.quant');
	
		

if(Number(quantity) > Number(input_val)) {
input.val(Number(input_val) + Number(min_quan));
}






if(Number(quantity) < Number(input_val)) {
input.val(Number(quantity));

}	



});
});

Последний раз редактировалось ArsenInvoker, 25.02.2016 в 20:15.
Ответить с цитированием
  #2 (permalink)  
Старый 26.02.2016, 11:44
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

ArsenInvoker,
Нормально работает, если начальное значение input_val > quantity.
Если же начальное значение, например 0, и мы несколько раз жмем +, то получаем ряд значений:
0 3 6 9 12 10
12 появляется из-за того, что наращивание производится после проверки input_val, и результат не проверяется.
Надо добавить проверку результата после наращивания
<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  <title>demo</title>
  <script type='text/javascript' src='http://code.jquery.com/jquery-1.8.3.js'></script>
  <script type="text/javascript">
    $(document).ready(function () {
        $('.my_plus').click(function () {

            var quantity = $(this).parent().parent().find('#quant').html();
            var min_quan = $(this).parent().parent().find('#min_quan').html();
            var input_val = $(this).parent().find('.quant').val();
            var input = $(this).parent().find('.quant');

            if (Number(quantity) > Number(input_val)) {
                input.val(Number(input_val) + Number(min_quan));
                
            }
            if (Number(quantity) < Number(input_val) || Number(quantity) < input.val() ) {
                input.val(Number(quantity));
            }
        });
    });
</script>
</head>
<body>
   <div>
      <div>
         <div id="quant">10</div>
         <div id="min_quan">3</div> 
         <div>
               <td><input class="quant" type="text" value="0" /></td> 
               <span class="my_plus">+</span>
         </div>
      </div>
   </div>
</body>
</html>

Какой-то странный у вас тег td без table и tr, но и он не мешает

Последний раз редактировалось Dilettante_Pro, 26.02.2016 в 15:10.
Ответить с цитированием
  #3 (permalink)  
Старый 29.02.2016, 15:45
Кандидат Javascript-наук
Отправить личное сообщение для ArsenInvoker Посмотреть профиль Найти все сообщения от ArsenInvoker
 
Регистрация: 06.03.2015
Сообщений: 116

все спс я сделал но немного по другому вот итог
$(document).ready(function() {




	
$('.my_minus').click(function () {
var quantity = $(this).parent().parent().find('#quant').html();
var min_quan = $(this).parent().parent().find('#min_quan').html();
var input_val = $(this).parent().find('.quant').val();
var input = $(this).parent().find('.quant');

result_input = Number(min_quan) < Number(input_val) ? input.val(Number(input_val) - Number(min_quan)) : input.val(Number(min_quan));



});


$('.my_minus').click(function () {
var min_quan = $(this).parent().parent().find('#min_quan').html();	
var input_val = $(this).parent().find('.quant').val();
var input = $(this).parent().find('.quant');	
	
if(Number(input_val) < Number(min_quan)) {
input.val(Number(min_quan));
}
});



$('.my_plus').click(function () {

var quantity = $(this).parent().parent().find('#quant').html();
var min_quan = $(this).parent().parent().find('#min_quan').html();
var input_val = $(this).parent().find('.quant').val();
var input = $(this).parent().find('.quant');



result_input = Number(quantity) > Number(input_val) ? input.val(Number(input_val) + Number(min_quan)) : input.val(Number(quantity));

});


$('.my_plus').click(function () {
var quantity = $(this).parent().parent().find('#quant').html();
var input_val = $(this).parent().find('.quant').val();
var input = $(this).parent().find('.quant');
if(Number(quantity) < Number(input_val)) {

input.val(Number(quantity));
}	

});

});
Ответить с цитированием
  #4 (permalink)  
Старый 29.02.2016, 16:26
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

ArsenInvoker,
что-то я не понял, зачем у вас по два обработчика на my_minus и my_plus
Ответить с цитированием
  #5 (permalink)  
Старый 29.02.2016, 20:30
Кандидат Javascript-наук
Отправить личное сообщение для ArsenInvoker Посмотреть профиль Найти все сообщения от ArsenInvoker
 
Регистрация: 06.03.2015
Сообщений: 116

Это чтобы было по две проверки а то если в конечном итоге у меня выходило за пределы максимального количества по этому сделал 2 проверки и ничего не выходит все ровно как часы )
Ответить с цитированием
  #6 (permalink)  
Старый 01.03.2016, 06:32
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

ArsenInvoker,
Хозяин - барин, но в моем примере все в одной проверке уложилось. Громоздкий код затрудняет восприятие и отладку, больше вероятность ошибок
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск