这与我之前的问题有关:How to add onclick function for programmatically created button。
现在,我目前有一个带有两个文本框的表单,一个按钮和一个隐藏表。单击该按钮时,将显示该表,并添加一行,其中两列上的文本框值和第三列的删除按钮。现在,我可以在单击“删除”按钮时删除所选行。我的新问题是如何获取第一列和第二列的数据,以便我可以更新数据库?
我使用JSON来更新数据库。这是我目前的代码:
$("#addToDisplay").click(function (event) {
$("#tblProducts").removeClass("hide");
var counter = 1;
event.preventDefault();
counter++;
var prod = {prodName: $("#txtProducts").val(), prodQty: $("#txtQty").val()}
$.ajax({
type: "POST",
traditional: true,
url: "/Service/JsonUpdateProduct",
dataType: "json",
data: prod,
success: function (result) {
var newRow = "<tr><td id='rowProd" + counter + "'>" + $("#txtProducts").val() + "</td><td id='rowQty" + counter + "'>" + $("#txtQty").val() + "</td><td><input type='button' value='Remove' id='btnRemove" + counter + "' class='remove' /></td></tr>";
$("#tblProducts").append(newRow);
$("#tblProducts").on("click", ".remove", function () {
$(this).closest("tr").remove();
var rowCount = $("#tblProducts tr").length;
var removeProd = {revertName: $("#rowProd" + counter).val(), revertQty: $("#rowQty" + counter).val()}
$.ajax({
type: "POST",
traditional: true,
url: "/Service/JsonRemoveProduct",
dataType: "json",
data: removeProd,
success: function (result) {
if (rowCount == 1) {
$("#tblProducts").addClass("hide");
}
}
});
$("#productQty").val("");
$("#autoCompleteText").val("");
});
}
});
});
我一直在尝试这段代码,但我得到的是导致错误的数量的空值。那么如何从选定的行中精确获取所选ProductName和Quantity的数据?
我基本上想要得到这样的东西:
var data = { prodName: $("#selectedRowCell1")}
所以我可以把它传递给我班上的方法并更新数据库。
此外,是否可以获取不同表的当前Id并将其插入另一个表+ 1.这样的事情:
Select id from Details
then
Update Products set detailId = Details.id + 1
?我知道这不起作用,因为我已经尝试过了。这样的事情甚至可能吗?
答案 0 :(得分:1)
首先,这些应该是单独的点击事件,不要在ajax回调中定义点击事件。这就是您使用on()
方法的原因。 .on()
充当event delegator
。 selector
是绑定到文档static element
的{{1}}。这意味着,我们可以将事件绑定到此父元素,如果作为第二个参数提供,它们的子节点将委托给它们。
on page load and not after
此处,问题是如何获取 $("#addToDisplay").click(function (event) {
//nothing to change here, omitted for length
});
。根据您的定义,产品数据是单击productData
类元素时行中的前两列。我们来做吧。
.remove