Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.01.2017, 12:00
Интересующийся
Отправить личное сообщение для Greendumb Посмотреть профиль Найти все сообщения от Greendumb
 
Регистрация: 06.08.2010
Сообщений: 12

Изменение значения input[number] отдельными кнопками
Здравствуйте!
Сразу прошу прощения за возможно детский вопрос, и по причине невладения темой попробую объяснить своими словами:

Имеется числовое поле ввода
Код:
<input type="number" min="1" class="uk-form-small" name="quantity" value="1">
Для изменения значения используются стандартные "стрелки" которые появляются при наведении на поле. НО этих стрелок нет, при просмотре страницы на планшете или телефоне, то есть пользователь не может изменить количество в поле.
Появилась идея сделать внешние кнопки изменения количества. Перелопатил кучу сайтов, нашел единственный подходящий для себя вариант:
Код:
<button onclick="document.getElementById('num1').value=parseInt(document.getElementById('num1').value)-1">-</button> 
<input id="num1" type="number" min="1" class="uk-form-small" name="quantity" value="1">
<button id="sendButton" onclick="document.getElementById('num1').value=parseInt(document.getElementById('num1').value)+1">+</button>
Теперь значения в поле изменяются при нажатии на соответствующую кнопку, НО не происходит пересчета суммы, как это происходит при изменении количества стандартными стрелками.
Я так понимаю, что не хватает какого-то события типа Submit для отправки формы при нажатии на кнопку. Но как это реализовать я, к сожалению, не понимаю.
Заранее благодарен за помощь!
п.с. Возможно есть другие варианты реализации этой задачи? Буду рад любой помощи.
Ответить с цитированием
  #2 (permalink)  
Старый 20.01.2017, 12:08
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Greendumb,
Сообщение от Greendumb
НО не происходит пересчета суммы,
Какой такой суммы? Вы пишете про один-единственный input

Стандартные стрелочки обеспечивают только изменение значения в input.
Дальнейшее использование этого значения - через обработчики событий.

Последний раз редактировалось Dilettante_Pro, 20.01.2017 в 12:13.
Ответить с цитированием
  #3 (permalink)  
Старый 20.01.2017, 12:23
Интересующийся
Отправить личное сообщение для Greendumb Посмотреть профиль Найти все сообщения от Greendumb
 
Регистрация: 06.08.2010
Сообщений: 12

Возможно не совсем понятно написал:
Имеется таблица, в которой есть "Цена", "Количество" (т.е. наш input) и "Сумма". Соответственно, при изменении количества должна изменятся сумма. В стандартном случае так и происходит, при чем количество можно менять как стрелками в самом поле, так и ввести свое значение и по нажатию enter, меняется сумма.
В моем случае с отдельными кнопками, количество в самом поле меняется, но не хватает, как я понимаю какого-то события, "аналога" нажатия enter если можно так выразиться
Ответить с цитированием
  #4 (permalink)  
Старый 20.01.2017, 12:33
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Greendumb,

Тогда у вас должен быть скрипт, в котором выполняются эти действия.
Ищите, в каком обработчике событий они выполняются.
В коде работы с кнопками можно будет добавить генерацию этого события
Ответить с цитированием
  #5 (permalink)  
Старый 20.01.2017, 13:03
Интересующийся
Отправить личное сообщение для Greendumb Посмотреть профиль Найти все сообщения от Greendumb
 
Регистрация: 06.08.2010
Сообщений: 12

Нашел такой код, есть тут что-нибудь полезное?
a('.zoocart-cart [name*="quantity"]',b.element).on("keyup",function(){var b=a(this).val();(isNaN(parseFloat(b))||!isFinite(b)||0>=b)&&a(this).val(1)}).on("change",function(){a(this).closest("tr").find(".price-total").zlux("spin",{affix:"replace"}),b.validateQuantities()})
Ответить с цитированием
  #6 (permalink)  
Старый 20.01.2017, 14:26
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Greendumb,
Попробуйте в конец скриптов работы кнопок добавить генератор
$("#num1").keyup(); или $("#num1").change();

Кстати, там у вас вроде используется jQuery, поэтому вместо
document.getElementById('num1').value
можно писать
$('#num1').val()
Ответить с цитированием
  #7 (permalink)  
Старый 20.01.2017, 15:08
Интересующийся
Отправить личное сообщение для Greendumb Посмотреть профиль Найти все сообщения от Greendumb
 
Регистрация: 06.08.2010
Сообщений: 12

Неудача.
В первом случае
Код:
<button onClick="$('num1').val()=parseInt($('num1').val())+1;$('#num1').keyup();">+</button>
вообще не работает
TypeError: $(...).val is not a function


Во втором случае
Код:
<button onClick="document.getElementById('num1').value=parseInt(document.getElementById('num1').value)+1;document.getElementById('num1').keyup();">+</button>
не признает функцию
TypeError: document.getElementById(...).keyup is not a function

то же самое и с change()
Ответить с цитированием
  #8 (permalink)  
Старый 20.01.2017, 17:39
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Greendumb,
Сообщение от Greendumb
Неудача.
В первом случае
Код:
<button onClick="$('num1').val()=parseInt($('num1').val()) +1;$('#num1').keyup();">+</button>
вообще не работает
TypeError: $(...).val is not a function
Вместо
$('num1').val()=parseInt($('num1').val()) +1;
попробуйте
$('#num1').val(parseInt($('#num1').val()) +1);

Последний раз редактировалось Dilettante_Pro, 20.01.2017 в 17:43.
Ответить с цитированием
  #9 (permalink)  
Старый 20.01.2017, 17:56
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Маленький пример
<input type="number" id="num1" min="1" class="uk-form-small" name="quantity" value="1">
<button onclick="$('#num1').val( +$('#num1').val() +1);$('#num1').keyup();">+</button>
<button onclick="$('#num1').val((+$('#num1').val() <= $('#num1').prop('min')) ? 1 : +($('#num1').val()) - 1);$('#num1').keyup();">-</button>
<div id="res"></div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script>
  $('#num1').on('keyup', function() {
       $("#res").text($(this).val());
   })
</script>

Последний раз редактировалось Dilettante_Pro, 20.01.2017 в 18:38.
Ответить с цитированием
  #10 (permalink)  
Старый 20.01.2017, 18:13
Интересующийся
Отправить личное сообщение для Greendumb Посмотреть профиль Найти все сообщения от Greendumb
 
Регистрация: 06.08.2010
Сообщений: 12

Большое спасибо за помощь!
<button onClick="jQuery('#num1').val(parseInt(jQuery('#num1').val())+1);jQuery('#num1').change();">+</button>


Пришлось заменить & на jQuery и с change() заработало!

Но конечно не без нюансов, теперь могут получатся минусовые значения. Хотя в input стоит min=1 и вылазит предупреждение, но сумма считается минусовая.

Последний раз редактировалось Greendumb, 20.01.2017 в 18:20.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменение значения кастомизированного select'а babbetta Events/DOM/Window 3 29.05.2016 17:36
Изменение значения переменной в режиме реального времени The_FactioN jQuery 3 09.03.2016 12:20
изменение значения input при смене значения select galart jQuery 4 30.01.2015 19:39
Динамическое изменение значений диаграммы в зависимости от значения ползунков Volchen0ck Events/DOM/Window 8 23.04.2014 13:15
изменение картинок в зависимости от значения input jump91 Общие вопросы Javascript 2 30.01.2012 09:57