Jquery 函数不适用于 gridview 中动态添加的行
Jquery function is not working for dynamically added rows in gridview
我有一个带有动态添加行的 gridview。当文本框更改时,我需要使用 jquery 进行一些计算。下面是我的 jquery 函数。但它没有触发。有没有其他方法可以找到控件。请帮助
<script>
$(function () {
$('#<%=gvConsumableUsageAdd.ClientID %>').find('input:text[id$="txtQuantity"]').keyup(function () {
debugger;
var price = $('#<%=gvConsumableUsageAdd.ClientID %>').find('span[id$="lblUnitPrice"]').text();
var qty = $('#<%=gvConsumableUsageAdd.ClientID %>').find('input:text[id$="txtQuantity"]').val();
var total = parseFloat(price * qty);
$('#<%=gvConsumableUsageAdd.ClientID %>').find('span[id$="lbtTotalAmount"]').text(total.toFixed(2));
});
});
</script>
提前致谢
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script type="text/javascript">
$("[id*=txtQuantity]").live("keyup", function () {
if (!jQuery.trim($(this).val()) == '') {
if (!isNaN(parseFloat($(this).val()))) {
var row = $(this).closest("tr");
var Quantity = parseFloat($(this).val());
var unitPrice = parseFloat($("[id*=lblUnitPrice]", row).html());
var Total = Quantity * unitPrice;
$("[id*=lbtTotalAmount]", row).html(Total);
}
}
}
);
</script>
我找到了使用上述功能的解决方案。
谢谢
由于您已经用上面给出的答案解决了您的问题,但这里有一个改进,您使用了 .live()
方法,该方法在 jQuery 最新版本中已弃用。
而不是 .live()
使用 .on()
附加事件处理程序。
改进后的代码看起来像
$('#<%=gvConsumableUsageAdd.ClientID %>').on('input', '[id*=txtQuantity]', function () {
var self = $(this);
if (!jQuery.trim(self.val()) == '') {
if (!isNaN(parseFloat(self.val()))) {
var row = self.closest("tr");
var Quantity = parseFloat(self.val());
var unitPrice = parseFloat($("[id*=lblUnitPrice]", row).html());
var Total = Quantity * unitPrice;
$("[id*=lbtTotalAmount]", row).html(Total);
}
}
});
我有一个带有动态添加行的 gridview。当文本框更改时,我需要使用 jquery 进行一些计算。下面是我的 jquery 函数。但它没有触发。有没有其他方法可以找到控件。请帮助
<script>
$(function () {
$('#<%=gvConsumableUsageAdd.ClientID %>').find('input:text[id$="txtQuantity"]').keyup(function () {
debugger;
var price = $('#<%=gvConsumableUsageAdd.ClientID %>').find('span[id$="lblUnitPrice"]').text();
var qty = $('#<%=gvConsumableUsageAdd.ClientID %>').find('input:text[id$="txtQuantity"]').val();
var total = parseFloat(price * qty);
$('#<%=gvConsumableUsageAdd.ClientID %>').find('span[id$="lbtTotalAmount"]').text(total.toFixed(2));
});
});
</script>
提前致谢
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script type="text/javascript">
$("[id*=txtQuantity]").live("keyup", function () {
if (!jQuery.trim($(this).val()) == '') {
if (!isNaN(parseFloat($(this).val()))) {
var row = $(this).closest("tr");
var Quantity = parseFloat($(this).val());
var unitPrice = parseFloat($("[id*=lblUnitPrice]", row).html());
var Total = Quantity * unitPrice;
$("[id*=lbtTotalAmount]", row).html(Total);
}
}
}
);
</script>
我找到了使用上述功能的解决方案。 谢谢
由于您已经用上面给出的答案解决了您的问题,但这里有一个改进,您使用了 .live()
方法,该方法在 jQuery 最新版本中已弃用。
而不是 .live()
使用 .on()
附加事件处理程序。
改进后的代码看起来像
$('#<%=gvConsumableUsageAdd.ClientID %>').on('input', '[id*=txtQuantity]', function () {
var self = $(this);
if (!jQuery.trim(self.val()) == '') {
if (!isNaN(parseFloat(self.val()))) {
var row = self.closest("tr");
var Quantity = parseFloat(self.val());
var unitPrice = parseFloat($("[id*=lblUnitPrice]", row).html());
var Total = Quantity * unitPrice;
$("[id*=lbtTotalAmount]", row).html(Total);
}
}
});