如何添加1到一个值在一个输入字段与javascript点击
How to add 1 to a value in an input field with javascript on click?
我有一个购物车,我想实现每件商品的更新数量。让我给你看一下代码,也许会更容易解释。
HTML:<div class="custom-quantity-input">
<input type="text" name="quantity" class="" value="<?php echo $items['qty']; ?>">
<a href="#" onclick="return false;" class="quantity-btn quantity-input-up"><i class="fa fa-angle-up"></i></a>
<a href="#" onclick="return false;" class="quantity-btn quantity-input-down"><i class="fa fa-angle-down"></i></a>
</div>
我希望当用户点击链接add-one时,增加输入字段的数量,当他们点击# reduce时,减少输入字段的数量,只是视觉上没有AJAX或任何东西。
我不太懂JavaScript,所以我找你帮忙
$(function(){
$(".quantity-input-up").click(function(){
var inpt = $(this).parents(".custom-quantity-input").find("[name=quantity]");
var val = parseInt(inpt.val());
if ( val < 0 ) inpt.val(val=0);
inpt.val(val+1);
});
$(".quantity-input-down").click(function(){
var inpt = $(this).parents(".custom-quantity-input").find("[name=quantity]");
var val = parseInt(inpt.val());
if ( val < 0 ) inpt.val(val=0);
if ( val == 0 ) return;
inpt.val(val-1);
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="custom-quantity-input">
<input type="number" min="0" name="quantity" class="" value="5">
<a href="#" class="quantity-btn quantity-input-up"><i class="fa fa-angle-up">+</i></a>
<a href="#" class="quantity-btn quantity-input-down"><i class="fa fa-angle-down">-</i></a>
</div>
<div class="custom-quantity-input">
<input type="number" min="0" name="quantity" class="" value="9">
<a href="#" class="quantity-btn quantity-input-up"><i class="fa fa-angle-up">+</i></a>
<a href="#" class="quantity-btn quantity-input-down"><i class="fa fa-angle-down">-</i></a>
</div>
<div class="custom-quantity-input">
<input type="number" min="0" name="quantity" class="" value="200">
<a href="#" class="quantity-btn quantity-input-up"><i class="fa fa-angle-up">+</i></a>
<a href="#" class="quantity-btn quantity-input-down"><i class="fa fa-angle-down">-</i></a>
</div>
希望对您有所帮助:
$( "#more" ).click(function() {
var qtt = parseInt($('#quantity').val(), 10);
$('#quantity').val(qtt+1);
});
$( "#less" ).click(function() {
var qtt = parseInt($('#quantity').val(), 10);
if (qtt > 0) { //does not allow negative values
$('#quantity').val(qtt-1);
}
});
<script src="https://code.jquery.com/jquery-3.1.0.min.js"></script>
<input type="text" id="quantity" value="5">
<button id="more" type="button">+</button>
<button id="less" type="button">-</button>
不要忘记包含jQuery项目
这是一个更好的和更可移植的解决方案,它考虑了页面上的多个输入:
jQuery(function($) {
$(".quantity-btn").on("click", function(e) {
e.preventDefault(); // Don't scroll top.
var $inp = $(this).closest("div").find("input"), // Get input
isUp = $(this).is(".quantity-input-up"), // Is up clicked? (Boolean)
currVal = parseInt($inp.val(), 10); // Get curr val
$inp.val(Math.max(0, currVal += isUp ? 1 : -1)); // Assign new val
});
// Other DOM ready code here
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="custom-quantity-input">
<input type="text" name="quantity" class="" value="0">
<a href="#" class="quantity-btn quantity-input-up">▲</a>
<a href="#" class="quantity-btn quantity-input-down">▼</a>
</div>
<div class="custom-quantity-input">
<input type="text" name="quantity" class="" value="2">
<a href="#" class="quantity-btn quantity-input-up">▲</a>
<a href="#" class="quantity-btn quantity-input-down">▼</a>
</div>
event.preventDefault()
只是为了确保你的浏览器不会滚动到顶部的锚点击
快捷方式:
function initCartCounter(input, upBtn, downBtn) {
upBtn.onclick = () => input.value++;
downBtn.onclick = () => input.value--;
}
//No matter which way you get these elements
initCartCounter(
document.getElementById('val'),
document.links[0],
document.links[1]
);
<input id="val" type="number" value="0"/>
<a href="javascript:;">Add</a>
<a href="javascript:;" >Sub</a>
更简洁和可伸缩:
!function() {
document.querySelectorAll('.cart')
.forEach(cart => {
let input = cart.querySelector('.cart-number');
cart.querySelector('.cart-number-inc')
.addEventListener('click', () => input.innerText = (input.innerText|0)+1);
cart.querySelector('.cart-number-dec')
.addEventListener('click', () => input.innerText = (input.innerText|0)-1);
})
}();
.pointer {cursor: pointer;}
<div class="cart">
<span class="cart-number">0</span>
<span class="cart-number-inc pointer">Add</span>
<span class="cart-number-dec pointer">Dec</span>
</div>
在我看来,最好的方法是使用本地
input[type=number]
:
<input type="number" value="0"/>
相关文章:
- 从Rally获取一个特定的标记,以便计算另一个字段中的值
- 通过单击动态加载的表中同一行的另一个字段来更新一行的字段
- Angular ng repeat order将多个字段作为一个字段
- 我怎么能让流星简单模式中的一个字段等于一个js变量,并且仍然让用户填写简单模式的其余部分
- 如何限制一个字段只接受4个数字字符作为输入,并获得'It’这是潜水警报
- 可以't无法将一个字段复制到另一个字段
- 如何隐藏&使用jQuery禁用依赖于另一个字段值的字段
- 我有一个字段计算,如果结果低于 60,则需要显示最小值
- 根据Rails4中的一个字段自动填充表单
- 在 Jquery ajax 中,在一个字段中输入时获取详细信息
- 在输入字段中选择一个值,然后用相应的数据填充另一个字段
- 如何获取id并在ror中基于该id显示下一个字段
- 使用Join,要求两个字段中的一个字段为非空
- jQuery自定义验证只显示最后一个字段的错误
- 我如何使用jQuery来点击和选择并让它填充一个字段
- 如何让Typeahead.js使用对象的一个字段而不是全部字段自动完成或选择
- 在document-mongoDB中设置一个字段
- 如何计算mongodb中两个集合中一个字段的不同值的数量
- AngularJS:在控制器中过滤除一个字段外的所有字段
- 更新其中一个字段时刷新其他输入字段.使用Angularjs(附Plunker)