我在中繼器中有多個文本框,我將在運行時在那些文本框中輸入值。我想在一個標籤中輸入在這些文本框中輸入的所有值的總和。我想用java腳本來做這件事。所以你可以幫我。如何使用JavaScript迭代通過ASP .NET文本框並計算值?
回答
這裏有一個想法,讓你開始:
- 將一個
<div>
你Repeater
周圍,給它一個獨特的id
。 - 使用JavaScript中的
document.getElementById()
函數獲取對該<div>
的引用。 - 使用DOM元素中的
getElementsByTagName()
函數查找所有內部的<input>
。 - 循環它們,將它們的值(分解爲整數)一起添加。
所以,如果您的標記看起來是這樣的:
<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)
更改您的標記,包括在
<input>
元素class
屬性是總和的一部分。在for
循環中,對inputs[i].className
進行測試以驗證是否包含特定字段。
你好,但我有3個不同的coulmn.if我做這個邏輯,然後 它將做所有文本boxes.for的總和,因爲我想txext框由它的唯一id.but當我做container.getElementByID。它不被支持。 它只支持container.getElementTagName.i想要3不同的總和爲3 difefrent coulmn.and如果我做簡單document.getelementID()它也不工作becoz在中繼器他們產生不同的id爲所有文本boxes.is有任何方式獲得那個不同的id在循環中。 – 2010-04-23 07:01:00
'container.getElementById()'(notice lower case d)* is * supported,but does not help you here。 「」上'id'屬性的值由ASP.NET決定,它在整個頁面中都是唯一的。 – 2010-04-23 07:54:45
@Nikunj:我已經更新了我的答案,提供了一些關於如何解決評論中提出的額外要求的想法。 – 2010-04-23 08:03:29
就像這樣,假設你想總結中繼控制中的所有文本框。這隻會對數值進行求和。
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。
+1因爲偉大的思想家都一樣! :-) – 2010-04-22 18:42:16
你好,但我有3個不同的coulmn.if我做這個邏輯,然後它會做所有文本boxes.for的總和,因爲我想txext框由它的唯一id.but當我做container.getElementByID.it不是支持的。它只支持container.getElementTagName.i想要3不同的總和爲3 difefrent coulmn.and如果我做簡單document.getelementID()它也不工作becoz在中繼器他們產生不同的id爲所有文本boxes.is有任何方式得到不同的編號在循環 – 2010-04-23 07:01:53
<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。
獲取jQuery。 使用例如CssClass ='totals'將類添加到中繼器標記中的文本框中。使用以下jQuery代碼來合計值
var total = 0;
$('input.totals').each(function(){
if (!isNan($(this).text())) total += $(this).text()
});
alert('Total is ' + total);
- 1. 如何迭代文本框並應用計算
- 2. 通過NSArray迭代並計算差異
- 3. 使用javascript計算文本框的值
- 4. 如何通過javascript迭代gridivew
- 5. ASP .NET - 如何通過中繼器迭代?
- 6. 通過for循環迭代文本框
- 7. 如何使用JavaScript計算兩個asp文本框的值並將其保存到數據庫中?
- 8. 如何通過ASP:文本框的JavaScript jQuery中
- 9. 迭代通過使用Python
- 10. 如何使用PHP在文本框中輸入值,並通過JavaScript的
- 11. 使用JavaScript模數迭代通過文本滑塊for循環
- 12. 如何計算文本框中的值?
- 13. ASP .NET文本框值和jQuery數學
- 14. ASP .NET - 設置DetailsView文本框的值
- 15. 迭代通過串並計數出現
- 16. 在asp中使用EditItemTemplate文本框迭代:GridView
- 17. 在JavaScript中迭代通過複選框
- 18. 使用Javascript計算並顯示文本框中的字符數
- 19. 通過迭代在JavaScript
- 20. 迭代通過所有使用JavaScript SDK
- 21. 迭代通過使用Javascript/jQuery的
- 22. 通過迭代表使用Javascript
- 23. asp net c#代碼將文本框綁定到文本框
- 24. Javascript:通過文本字段輸入計算餘額並提前
- 25. 如何通過javascript添加ASP DropDown值?
- 26. 迭代通過在Javascript
- 27. 如何在設計時通過ASP .Net訪問.net
- 28. 如何通過JavaScript/jQuery計算文本塊的差異?
- 29. 如何使用NumericUpDown計算文本框值的總和?
- 30. 如何使用jQuery從文本框動態計算值?
這不是要求完成代碼的地方。嘗試編寫代碼,然後在遇到困難時尋求幫助。 – driis 2010-04-22 18:32:27
有人請重命名。也許是retag。而一些更多的信息也不會傷害。 – Foxfire 2010-04-22 18:32:57
在[JQuery論壇](http://forum.jquery.com/topic/textboxes-in-asp-repeater-with-total-row)上可能會有幫助。 – Glennular 2010-04-22 18:32:48