Jquery函数不适用于gridview中动态添加的行

时间:2015-03-07 05:54:06

标签: javascript jquery asp.net 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>

先谢谢

2 个答案:

答案 0 :(得分:0)

<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>

我使用上述功能找到了解决方案。 谢谢

答案 1 :(得分:0)

由于你已经用上面给出的答案解决了你的问题,但是这里有一些改进,你使用了jQuery最新版本中不推荐使用的.live()方法。

而不是 .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);
        }
    }
});