2015-03-07 3 views
0

У меня есть gridview с динамически добавленными строками. Мне нужно сделать некоторые вычисления, используя jquery, когда текстовое поле изменилось. Ниже моя функция jquery. Но она не стреляет. Есть ли другой способ найти элементы управления. Пожалуйста, помогитеФункция Jquery не работает для динамически добавленных строк в gridview

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

Заранее спасибо

+0

может быть полезным http://stackoverflow.com/questions/27976739/jquery-click-function-is-not-working-for-dynamic-elements – Mritunjay

+0

что 'отладчик '? эта строка буквально ничего не делает, кроме как, возможно, выдает ошибку (вызывая неудачу вашего скрипта) – winhowes

ответ

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> 

Я нашел решение, используя описанную выше функцию. Спасибо

0

Как вы уже решили свою проблему с приведенным выше ответом, но здесь улучшения, вы использовали метод .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); 
     } 
    } 
}); 
Смежные вопросы