如何使用javascript迭代ASP .NET文本框并计算一个值?

时间:2010-04-22 18:29:01

标签: .net asp.net javascript asp.net-ajax

我在转发器中有多个文本框,我将在运行时在这些文本框中输入值。我想要在一个label.i中的那些文本框中输入的所有值的总和。我想使用java脚本来做这件事。所以,请你帮助我。

4 个答案:

答案 0 :(得分:6)

这是让你入门的一个想法:

  1. <div>周围放置一个Repeater,并为其添加一个唯一的id
  2. 使用JavaScript中的document.getElementById()函数获取对<div>
  3. 的引用
  4. 使用DOM元素中的getElementsByTagName()函数查找其中的所有<input>
  5. 循环遍历它们,将它们的值(解析为整数)加在一起。
  6. 因此,如果您的标记看起来像这样:

    <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>实际上是type=text或确认输入的值是数字。这些部分留给读者练习;)


    编辑:如果Repeater输出的每个“行”中有多个文本框,并且您只想对一个“组”框的值求和,则需要稍微改变一下脚本。以下是两种可能的解决方案 - 选择一种:

    1. 如果您确切知道每个“行”中有多少<input>个元素,则可以将客户端脚本中的for循环更改为仅访问每个第N个元素。例如。仅选择每行中三个字段的最后一个:for (var i = 2; i < inputs.length; i += 3)

    2. 更改标记,使class元素包含<input>属性,作为总和的一部分。在for循环中,对inputs[i].className进行测试,以验证是否要包含特定字段。

答案 1 :(得分:2)

类似的东西,假设您想要对转发器控件中的所有文本框求和。这也只是数字值的总和。

var repeater = document.getElementById('repeater_id');
var inputs = repeater.getElementsByTagName('input');
var sum = 0;
for (var i=0; i < inputs.length; i++) {
    if (inputs[i].type === "text" && /^\d+$/.test(inputs[i].value)) {
        sum += inputs[i].value;
    }
}

如果你正在做很多客户端的事情,为什么不看看用jQuery这样做呢。

答案 2 :(得分:0)

<asp:Repeater ID="rpt" CssClass="rpt">
<itemTemplate>
  <asp:TextBox ID="txtValue" />
</itemTemplate>
<footerTemplate>
  <asp:Label Id="lblResult" CssClass="result" />
</footerTemplate>
</asp:Repeater>

javascript使用jQuery:

$(document).ready(function(){
  $('.rpt input[type=text]').live('onchange', calc);
});

function calc(){
  var result = 0;
 $('.rpt input[type=text]').each(function(){
  // need better input cleaning here...
  result += parseInt($(this).val());
  });
  $('.rpt .result').val(result);
}

HTH。

答案 3 :(得分:0)

获取jQuery。 使用例如CssClass ='totals'将类添加到转发器标记中的文本框中。使用以下jQuery代码来计算值

var total = 0;
$('input.totals').each(function(){

 if (!isNan($(this).text())) total += $(this).text()
});

alert('Total is ' + total);