Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 08.10.2014, 06:25
Интересующийся
Отправить личное сообщение для Pavel_G Посмотреть профиль Найти все сообщения от Pavel_G
 
Регистрация: 03.11.2012
Сообщений: 22

Что-то вроде спиннера
Доброе утро, подскажите как реализовать, есть вот такой HTML:

<div id="qty-spinner" class="qty">
   <i data-helper="reduce" class="qty__helper reduce"></i>
   <input type="text" id="product_qty_{{ item.item.id }}" class="item-qty" value="{{ item.item.quantity }}">
   <i data-helper="add" class="qty__helper add"></i>
</div>


В двух словах - этот блок в корзине магазина, он позволяет увеличить кол-во экземпляров товара, либо уменьшить.
нужно при клике на
<i data-helper="reduce" class="qty__helper reduce"></i>
отнять 1 от числа в input, а по клику на
<i data-helper="add" class="qty__helper add"></i>
соответственно увеличить на 1.

Заранее спасибо
Ответить с цитированием
  #2 (permalink)  
Старый 08.10.2014, 08:29
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,124

Как вариант...

<!DOCTYPE html>
<html>
<head>
<script src='http://code.jquery.com/jquery-latest.js'></script>
<!--
<link rel='stylesheet type=text/css href=tmp.css' />
-->
<style type='text/css'>
</style>
<script type='text/javascript'>
$(function (){
	$('.reduce').click(function (){
		var o=$(this).next();
		var val=parseInt(o.val());
		if (val>0) {
			o.val(val-1);
		};
	});
	$('.add').click(function (){
		var o=$(this).prev();
		var val=parseInt(o.val());
		o.val(val+1);
	});
});
</script>
</head>
<body>
<div id="qty-spinner" class="qty">
   <i data-helper="reduce" class="qty__helper reduce">-</i>
   <input type="text" id="product_qty" class="item-qty" value="4">
   <i data-helper="add" class="qty__helper add">+</i>
</div>
</body>
</html>
</html>
Ответить с цитированием
  #3 (permalink)  
Старый 08.10.2014, 08:43
Интересующийся
Отправить личное сообщение для Pavel_G Посмотреть профиль Найти все сообщения от Pavel_G
 
Регистрация: 03.11.2012
Сообщений: 22

Спасибо!
Ответить с цитированием
  #4 (permalink)  
Старый 08.10.2014, 09:39
Аватар для utb
utb utb вне форума
Аспирант
Отправить личное сообщение для utb Посмотреть профиль Найти все сообщения от utb
 
Регистрация: 26.10.2011
Сообщений: 94

ksa,
со всем уважением, но
var o=$(this).next();

сломается сразу как добавим элемент, не ?
бест практик, что нам говорит кто знает ?
Мне в голову приходит только
1 - взять по id или классу (уникальный ввиде .js_blabla) - но если в корзине несколько товаров - они генерируют одинаковый код, что уже не очень
2 - взять родителя и в нем найти нужный инпут, но тут надо следить за тем, чтобы кнопки и инпут были на 1 уровне

Кто что скажет ? наверное, есть элегантное решение
Ответить с цитированием
  #5 (permalink)  
Старый 08.10.2014, 10:06
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,124

Сообщение от utb
Мне в голову приходит только
Могу сказать только одно - каждый дрочет как он хочет...
Ответить с цитированием
  #6 (permalink)  
Старый 08.10.2014, 10:27
Аватар для utb
utb utb вне форума
Аспирант
Отправить личное сообщение для utb Посмотреть профиль Найти все сообщения от utb
 
Регистрация: 26.10.2011
Сообщений: 94

ksa,

ну да)) извратиться можно по-всякому.

я просто думал, есть какой-нибудь лучший вариант или паттерн)
Ответить с цитированием
  #7 (permalink)  
Старый 08.10.2014, 11:21
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,075


<!DOCTYPE html>
<html>
<head>
<script src='http://code.jquery.com/jquery-latest.js'></script>
<style type='text/css'>
</style>
<script type='text/javascript'>
$(function (){
	$('.qty__helper').click(function (event){
	    event.stopPropagation();
		var o=$(this).siblings('.item-qty');
		var val=parseInt(o.val());
        val += $(this).hasClass("add") ? 1 : val == 0 ? 0 : -1;
	   	o.val(val);
	});
});
</script>
</head>
<body>
<div id="qty-spinner" class="qty">
   <i data-helper="reduce" class="qty__helper reduce">-</i>
   <input type="text" id="product_qty" class="item-qty" value="4">
   <i data-helper="add" class="qty__helper add">+</i>
</div>
</body>
</html>

ksa, а у вас молоко убежало в конце кода
Ответить с цитированием
  #8 (permalink)  
Старый 08.10.2014, 11:36
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,124

Сообщение от рони
а у вас молоко убежало в конце кода

Вроде работающий скрипт...
Ответить с цитированием
  #9 (permalink)  
Старый 08.10.2014, 12:02
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

<!DOCTYPE html>

<input type="number" min="0" value="4" />

<script src='http://code.jquery.com/jquery-latest.min.js'></script>
<script src="http://afarkas.github.io/webshim/js-webshim/minified/polyfiller.js">
<script>
webshim.polyfill('forms forms-ext');
</script>
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #10 (permalink)  
Старый 08.10.2014, 12:06
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Кстати, с этой штукой можно вполне использовать HTML5 поля типов date, time, month, color и тд. А также кастомизировать их.
Демки: http://jsfiddle.net/trixta/VNuct/
__________________
В личку только с интересными предложениями
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Смишных картинок тред megaupload Оффтопик 3448 03.07.2023 09:47
dart и typescrip. Что перспективнее ? eugenk Общие вопросы Javascript 4 13.01.2014 22:06
Открытие div блока при первом визите на сайт Nushaba Общие вопросы Javascript 28 20.12.2013 21:24
Что такое "шаблоны"? jsuse Серверные языки и технологии 5 11.07.2012 08:22
Разбираем AjaxOOP eai Общие вопросы Javascript 41 04.11.2010 23:37