jquery - 输入 type='number' 事件 keyup 和 keydown
问题描述
我尝试为输入类型编号创建一个事件。它在购物篮页面上,如果用户点击向上按钮,它也必须更改价格和向下。如果它只是篮子里的一件物品,它工作得很好。但如果它是 2 或更多,那么它就不会像它必须做的那样工作。
$("input[type=number]").bind('keyup input', function() {
var wrapper = $(this).closest(".quantety");
var quantety = wrapper.find('.inputQuantity').val();
alert("quantety = " + quantety + " quantetyNumber = " + quantatyNumber);
if (quantety > quantatyNumber) {
quantatyNumber = quantatyNumber + 1;
var summaplus = wrapper.find('.inputQuantity').attr('id');
var totalPlus = wrapper.find('.penger').text();
totalPlus = parseInt(totalPlus);
summaplus = parseInt(summaplus);
var total = totalPlus + summaplus;
$('.penger').text(total);
var summaUp = $('.summa').text();
summaUp = parseInt(summaUp);
var Plus = summaUp + summaplus;
$('.Geld').text(Plus);
$('.summa').text(Plus);
} else if (quantety < quantatyNumber) {
alert('Test-2');
quantatyNumber = quantatyNumber - 1;
//var wrapper = $(this).closest(".basDiv");
var summaminus = wrapper.find('.inputQuantity').attr('id');
var totalMinus = wrapper.find('.penger').text();
totalMinus = parseInt(totalMinus);
summaminus = parseInt(summaminus);
var Minus = totalMinus - summaminus;
$('.penger').text(Minus);
//
var summaDown = $('.summa').text();
summaDown = parseInt(summaDown);
var total = summaDown - summaminus;
$('.Geld').text(total);
$('.summa').text(total);
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class='basketmain'><br>
<h2>Varorkorg</h2>
<div class='basDiv'>
<img src='img/4.jpg' class='basIMG' alt='Taklampa Arma' />
<div class='ProductName'>
<p class='Pname'>Taklampa Arma</p>
</div>
<div class='itemLink'><a href='#' class='ProductLink'>Taklampa Arma</a>
</div>
<div class='quantety'>
<input type='number' class='inputQuantity' id='254' value='1' min='1' />
</div>
<div class='ProductPrice'>Pris: <span class='penger'>254</span> kr
</div>
<div class='removeItem'><img src='img/remove.png' class='removeItemImg' alt='Radera'>
</div>
</div>
<div class='basDiv'>
<img src='img/5.jpg' class='basIMG' alt='Taklampa Igor'>
<div class='ProductName'>
<P class='Pname'>Taklampa Igor</p>
</div>
<div class='itemLink'><a href='#' class='ProductLink'>Taklampa Igor</a>
</div>
<div class='quantety'>
<input type='number' class='inputQuantity' id='123' value='1' min='1' />
</div>
<div class='ProductPrice'>Pris: <span class='penger'>123</span> kr
</div>
<div class='removeItem'><img src='img/remove.png' class='removeItemImg' alt='Radera'>
</div>
</div>
<div class="DivSumma">
<div class="PayButton">
<form action="" method="POST">
<input type="submit" value="Betala" id="PayItem" />
</form>
</div>
<div class="TotalSumma">Att Betala <span class="summa">377</span> kr
</div>
</div>
</div>
变量 quantatyNumber 是全局变量,用于查看点击时输入的值是否更大。是否有可能以简单的方式解决我的问题?
带有“.Geld”类的 div 块在我的标题中。
解决方案
我不会再创造一个问题。现在我已将输入类型编号更改为输入类型文本并添加了两个图像,并为每个图像在点击功能上创建了两个功能。向下看代码。
$('.qantetyImgPlus').on('click', function(){
var wrapper = $(this).closest(".basDiv");
quantety = wrapper.find('.inputQuantity').val();
quantety = parseInt(quantety);
if(quantety >= 1){
var quantatyNumber = quantety + 1;
$('.inputQuantity').val(quantatyNumber);
alert("quantety = " + quantety + " quantetyNumber = "+ quantatyNumber);
var summaplus = wrapper.find('.inputQuantity').attr('id');
var totalPlus = wrapper.find('.pengerpenger').text();
alert('pengerpenger = '+ totalPlus);
totalPlus = parseInt(totalPlus);
summaplus = parseInt(summaplus);
alert(totalPlus + " " + summaplus);
var total = totalPlus + summaplus;
alert(total);
wrapper.filters('.pengerpenger').text(total);
var summaUp = $('.summa').text();
summaUp = parseInt(summaUp);
var Plus = summaUp + summaplus;
$('.Geld').text(Plus);
$('.summa').text(Plus);
}else{
$('.inputQuantity').val(1);
}
});
$('.qantetyImgMinus').on('click', function(){
var wrapperMinus = $(this).closest(".basDiv");
quantetyMinus = wrapperMinus.find('.inputQuantity').val();
alert('test');
if(quantetyMinus >= 2){
var quantatyNumber = quantetyMinus - 1;
$('.inputQuantity').val(quantatyNumber);
var summaminus = wrapperMinus.find('.inputQuantity').attr('id');
var totalMinus = wrapperMinus.find('.pengerpenger').text();
totalMinus = parseInt(totalMinus);
summaminus = parseInt(summaminus);
var Minus = totalMinus - summaminus;
alert(Minus);
wrapperMinus.filter('.pengerpenger').text(Minus);
//
var summaDown = $('.summa').text();
summaDown = parseInt(summaDown);
var total = summaDown - summaminus;
$('.Geld').text(total);
$('.summa').text(total);
}else if(quantetyMinus === 1){
$('.inputQuantity').val(1);
}
});
但是现在,如果我单击 Plus 图像,它可以正常工作,它必须更改总价格,但它会更改所有类名为“pengerpenger”的跨度的价格,我只需要与类名在同一个 div 块中“basDiv”,它改变了所有输入框的值。
推荐阅读
- mongodb - Mongodb - 如何为 JSON 字段创建全文索引?
- c++ - gcc 4.8.5 和 gcc 8.1.0 之间的随机数生成差异
- javascript - .append() 通过索引号乘以 jQuery
- python - Python、MySQLConnector、MySQLCursor.fetchall() 抛出“无结果集”错误,尽管查询返回行
- vba - VBA 电子邮件签名代码证明
- c# - 如何在c#中将外部html文件转换为PDF
- sql - 准备查询的结果不一致以查找最后一个插入 ID
- css - 复选框未选中
- java - 在 RESTEasy 和 JAX-RS 中实现简单的身份验证
- css - 为什么即使设置为无,列表样式的项目仍会显示?