2013-10-03 2 views
0

Я использую asp.net с основными страницами. У меня есть список, который создает 8 строк. То, что я хотел бы использовать jQuery, - это когда кто-то вводит значение в ячейку 1-7, когда они покидают ячейку, я бы хотел вычислить ячейки 1-7 и поместить это значение в ячейку 8. Таким образом, каждая строка будет иметь расчет выполнен. Я нашел некоторый код для прохождения через таблицуиспользовать JQuery для подсчета ячеек в строке

enter code here 

$(document).ready(function() { 
$('#ctl00_ContentPlaceHolder1_lvOccLine_ctrl0_tbltblOccLineList tr').each(function() { 
    $(this).find('td').each(function() { 
    }) 
}) 

});

, но не достигнут никакого прогресса. В firebug я вижу, что значение, которое я пытаюсь получить после, находится в этом/cell/1/childnodes. Похоже, что этот

NodeList[input#ctl00_ContentPlaceHolder1_lvOccLine_ctrl0_txtCacasian attribute value = "1"] 

HTML, оказанные выглядит как этот

<input type="text" style="width:100%;" id="ctl00_ContentPlaceHolder1_lvOccLine_ctrl0_txtCacasian" value="1" name="ctl00$ContentPlaceHolder1$lvOccLine$ctrl0$txtCacasian"> 

Любая помощь будет большим

ответ

0

Я честно не слишком хорошо знакомы с ASP.NET, но в общих чертах JQuery, вы легко могли бы это сделать, просто выбрав ячейки с помощью CLASSES и обновив 8-ю ячейку?

Например, 1) поставить общий класс для первых 7 клеток, то есть «клетка-выборки» 2) поставить уникальный класс для последней 8-й ячейки, то есть «клетка-8» 3) на размытие случае ячейки 7 (размытости = focusOut http://api.jquery.com/blur/) просто сделать простую выборку и добавив:

$(this).find('.cell-to-fetch').each(function() { 
    $total += $(this).val(); 
}) 

4) и, наконец, просто обновить клеточно-8, в результате вы получаете, как это:

$('.cell-8').val($total); 

Надеюсь, это поможет, по крайней мере, в качестве общей концепции.

0

Demo

$(document).ready(function() { 
    $('#ctl00_ContentPlaceHolder1_lvOccLine_ctrl0_tbltblOccLineList input').on('change', function() { /* bind change to input */ 
     var sum = 0, 
      $this = $(this).parents('tr'); 
     $this.find('input').each(function() { /* find all inputs in the row */ 
      var value = parseInt(this.value); 
      sum += value % 1 == 0 ? value : 0; /* add values together */ 
     }); 
     $this.find('td').last().text(sum); /* output sum into last column */ 
     return true; 
    }); 
}); 
+0

спасибо за код .. Я получаю сообщение об ошибке, что JavaScript Object ошибка времени выполнения не поддерживает свойство или метод на. Я использую jquery, указывающий на http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js. также указывая на jquery-ui.min.js. Может быть, я не указываю правильные файлы jquery? – jvcoach23

+0

@ jvcoach23 Вы используете очень устаревшую версию jQuery, которая еще не имеет метода 'on'. Я думаю, что в то время это было «связывать». –

+0

yep .. Я обновил jquery и теперь это не ошибка. это еще не совсем то, что мне нужно ... он суммирует все столбцы 1-7 и все строки вместе. Мне нужно общее количество строк 1, столбцы 1-7 и общее число должно быть в столбце 8. Затем сделайте то же самое для строки 2. Код содержит входы из столбца 0, который мне не нужен. Я буду продолжать. Спасибо, что начал меня – jvcoach23

0

http://jsfiddle.net/dKxW8/

$(document).ready(function() { 
    $("#calc").click(function() { 
     //first get number of rows in the table (because we have one input per row) 
     var count = $("#mytable tr").length; 

     //loop through the rows and get the sum of every input value except the last 
     var sum = 0; 
     for (var i = 0; i < (count - 1); i++) { 
      //get the value and add it to sum 
      //check if its a number 
      if(!isNaN(parseInt($("#mytable tr").eq(i).find("input").val(), 10))){ 
       sum += parseInt($("#mytable tr").eq(i).find("input").val(), 10); 
      } 
     } 

     //assign the last input's value (in last row) to the sum 
     $("#mytable tr").eq(count - 1).find("input").val(sum); 
    }); 
});