Вот одна из идей, с которой можно начать:
- Поместите
<div>
вокруг вашего Repeater
и дайте ему уникальный id
. - Используйте
document.getElementById()
функция в JavaScript для получения ссылки на этот <div>
. - Используйте функцию
getElementsByTagName()
в элементе DOM, чтобы найти все <input>
s в. - Зацикливайтесь на них, добавляяих значения (анализируются как целые числа) вместе.
Поэтому, если ваша разметка выглядит примерно так:
<div id="coolStuff">
<asp:Repeater ... >
</div>
JavaScript выглядит примерно так:
var container = document.getElementById("coolStuff");
var inputs = container.getElementsByTagName("input");
var sum = 0;
for (var i = 0; i < inputs.length; i++) {
sum += inputs[i].value;
}
alert(sum);
Теперь этот код не проверяет, чтобы убедиться, что <input>
s на самом деле имеют значение type=text
, или чтобы подтвердить, что введенные значения являются числами.Эти части оставлены как упражнения для читателя;)
Редактировать: Если у вас есть несколько текстовых полей в каждой «строке», выводимых Repeater
, и вы хотите толькоСуммируя значения для одной «группы» ящиков, вам нужно будет немного изменить скрипт.Вот два возможных решения - выберите одно:
Если вы точно знаете, сколько элементов <input>
имеется в каждой «строке», вы можете изменить цикл for
в клиентескрипт для посещения только каждого N-го элемента.Например.чтобы выбрать только последнее из трех полей в каждой строке: for (var i = 2; i < inputs.length; i += 3)
Измените разметку, включив атрибут class
в элементах <input>
, которые будут частью суммы.В цикле for
выполните проверку на inputs[i].className
, чтобы проверить, нужно ли включить конкретное поле.