Увеличить / уменьшить значение value у input
В разделе "корзина" добавленные товары выводятся в таблице.
Напротив каждого товара есть поле (input) в котором отображается количество товаров конкретного наименования. Данные изначально принимают значение 1, могут вписываться вручную, а так же увеличиваться (+) либо уменьшаться (-). <table> <tr> <td> <a class="minus" href="#">-</a> <input type="text" value="1" /> <a class="plus" href="#">+</a> </td> <td> <a class="minus" href="#">-</a> <input type="text" value="1" /> <a class="plus" href="#">+</a> </td> </tr> </table> Я не силен в jquery но смог написать код который работает для всех полей input одновременно.
$(function() {
$('input').each(function() {
$('a.minus').click(function() {
var data = $('input.amount').val();
if(data > 0) {
$('input.amount').val(parseInt(data) - 1);
}
return false
});
$('a.plus').click(function() {
var data = $('input.amount').val();
$('input.amount').val(parseInt(data) + 1);
return false
});
});
});
Мне же нужно чтобы для каждого значения менялись отдельно. Я пробовал через each, но так и не смог справиться. Раньше делал аналогичные задания, но сейчас почемуто не выходит. Помогите пожалуйста. |
Справился :)
$(function() {
$('td').each(function() {
var asd = $(this);
asd.find('a.minus').click(function() {
var data = asd.find('input').val();
if(data > 0) {
asd.find('input').val(parseInt(data) - 1);
}
return false
});
asd.find('a.plus').click(function() {
var data = asd.find('input').val();
asd.find('input').val(parseInt(data) + 1);
return false
});
});
});
|
$(function() {
$('input').each(function() {
var $input = $(this);
$input.prev('a.minus').click(function() {
$input.val ( Math.max( parseInt( $input.val() )--, 0 ) );
return false;
});
$input.next('a.plus', this.parentNode).click(function() {
$input.val ( parseInt( $input.val() )++ );
return false;
});
});
});
|
Подскажите как решить вопрос с вводом текстовых данных и отрицательных чисел? Пока сделал disabled тем самым ограничив ввод данных с клавиатуры, но хотелось бы чтобы пользователь мог вводить сам количество.
|
Справился :)
$("input").keydown(function(event) {
// Allow only backspace and delete
if ( event.keyCode == 46 || event.keyCode == 8 ) {
// let it happen, don't do anything
}
else {
// Ensure that it is a number and stop the keypress
if (event.keyCode < 48 || event.keyCode > 57 ) {
event.preventDefault();
}
}
});
|
<script>
function check_symbol(event) {
event= event || window.event;
if ((event.keyCode > 57 || event.keyCode <48) && (event.keyCode<35 || event.keyCode>39) && event.keyCode!=8)
return false;
}
</script>
<input onkeydown="return check_symbol(event)">
А ваш вариант не позволит мне стирать введённые цифры и перемещаться по ним стрелками. |
как сделать увеличение на 1
<div class="opt-quontity">
<span class="minus">-</span>
<input type="text" title="<?php echo JText::_('COM_VIRTUEMART_CART_UPDATE') ?>" class="inputbox input-ultra-mini" size="3" maxlength="4" name="quantity" value="<?php echo $prow->quantity ?>" data-vpid="<?php echo $prow->cart_item_id ?>" />
<span class="plus">+</span>
</div> <!-- .opt-quontity -->
<script type="text/javascript" >
jQuery(document).ready(function($) {
$(document).ready(function() {
$('.minus').click(function () {
var $input = $(this).parent().find('input');
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');
$input.val(parseInt($input.val()) + 1);
$input.change();
return false;
});
});
});
</script>
в корзине увеличивает на количество товаров если 1 товар, то увеличивает input на 1, а если 2 то на 2 единицы... |
Vanilla JS
http://jsfiddle.net/vlasenkofedor/UFmLf/ |
как подключить этот скрипт, подключил но интпутов стало в 2 раза больше)
|
| Часовой пояс GMT +3, время: 23:58. |