Изменение значения 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> Я так понимаю, что не хватает какого-то события типа Submit для отправки формы при нажатии на кнопку. Но как это реализовать я, к сожалению, не понимаю. Заранее благодарен за помощь! п.с. Возможно есть другие варианты реализации этой задачи? Буду рад любой помощи. |
Greendumb,
Цитата:
Стандартные стрелочки обеспечивают только изменение значения в input. Дальнейшее использование этого значения - через обработчики событий. |
Возможно не совсем понятно написал:
Имеется таблица, в которой есть "Цена", "Количество" (т.е. наш input) и "Сумма". Соответственно, при изменении количества должна изменятся сумма. В стандартном случае так и происходит, при чем количество можно менять как стрелками в самом поле, так и ввести свое значение и по нажатию enter, меняется сумма. В моем случае с отдельными кнопками, количество в самом поле меняется, но не хватает, как я понимаю какого-то события, "аналога" нажатия enter если можно так выразиться |
Greendumb,
Тогда у вас должен быть скрипт, в котором выполняются эти действия. Ищите, в каком обработчике событий они выполняются. В коде работы с кнопками можно будет добавить генерацию этого события |
Нашел такой код, есть тут что-нибудь полезное?
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()}) |
Greendumb,
Попробуйте в конец скриптов работы кнопок добавить генератор $("#num1").keyup(); или $("#num1").change(); Кстати, там у вас вроде используется jQuery, поэтому вместо document.getElementById('num1').value можно писать $('#num1').val() |
Неудача.
В первом случае Код:
<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() |
Greendumb,
Цитата:
$('num1').val()=parseInt($('num1').val()) +1; попробуйте $('#num1').val(parseInt($('#num1').val()) +1); |
Маленький пример
<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> |
Большое спасибо за помощь!
<button onClick="jQuery('#num1').val(parseInt(jQuery('#num1').val())+1);jQuery('#num1').change();">+</button> Пришлось заменить & на jQuery и с change() заработало! Но конечно не без нюансов, теперь могут получатся минусовые значения. Хотя в input стоит min=1 и вылазит предупреждение, но сумма считается минусовая. |
Часовой пояс GMT +3, время: 03:37. |