我在用户点击 enter 键时添加了额外的表格行。
下面的代码很奇怪。它会根据键在输入字段中按下键的次数来添加行 如果 enter 被击中,我只想添加一行。
有人可以告诉我下面代码有什么问题吗?
$(document).on('keypress', '#quantity_sold', function () {
var num = 0;
console.log('key pressed');
$(this).keypress(function (e) {
var code = (e.keyCode ? e.keyCode : e.which);
if (code == 13) {
e.preventDefault();
quantitySold = $("#quantity_sold").val();
rowTotal = parseInt(quantitySold) * unitPrice;
row = "";
insertRow();
console.log("Num inside if statement:" + num);
$("#inventory_name").val("");
$("#quantity_sold").val("");
$("#inventory_name").focus();
return false;
}
console.log("Num outside of if statement:" + num);
num++;
});
});
至少在这一周中苦苦挣扎,我在第二次粘贴代码时发现了问题。
我刚刚删除了$(this).keypress(function(e){this line。这就是我需要做的全部。
答案 0 :(得分:1)
每次keypress
时,您都会将#quantity_sold
个事件绑定到keypress
。这就是为什么火灾事件的数量持续增加的原因。不要那样做。如果您只删除$(this).keypress(function(e){
包装器,这应该完全符合您的要求。
答案 1 :(得分:0)
摆脱重复的内部按键事件处理程序。将您的代码修改为:
$(document).ready(function () {
$("#quantity_sold").keypress(
function (event) {
var num = 0;
console.log('key pressed');
var code = (e.keyCode ? e.keyCode : e.which);
if(code == 13){
e.preventDefault();
quantitySold= $("#quantity_sold").val();
rowTotal = parseInt(quantitySold) * unitPrice;
row = "";
insertRow();
console.log("Num inside if statement:" + num);
$("#inventory_name").val("");
$("#quantity_sold").val("");
$("#inventory_name").focus();
return false;
}
console.log("Num outside of if statement:" + num);
num++;
}
);
});