我正在使用 asp.net 来呈现由大量文本框组成的页面。
组的数量取决于客户,因此不在我的控制范围内。
我想要的是,当组中的输入框中的值发生更改时,该组的结果框会更改为该组的总和,并更改背景颜色。
我已经为一组原型工作,如下所示。
function calculateSetColour(i) {
var total = 0;
$(".answer").each(function () {
if (!isNaN(this.value) && this.value.length != 0) {
total += parseFloat(this.value);
}
});
$(".result").val(total);
$(".answer").addClass(calculateColour(total));
}
但我似乎无法让它为团体工作。我假设我需要添加第二个选择器,所以我可以使用
$(.answer .group" + i).each ..
其中 i 是以编程方式添加到每个组的 id。但是在函数中放置一条警告语句表明它永远不会被命中,所以我怀疑我的语法错误并且选择器永远不会匹配。
那么我的方法是否正确,将变量合并到类选择器中的正确语法是什么?(类选择器是最安全的,因为 .net 可以破坏 id 和名称)
根据要求,html看起来像
<div class="reportItem">
TOTAL UNITS DELIVERED<BR />
<span id="ctl00_ContentPlaceHolder1_rptdG_ctl01_Name">Site A</span>
<div class="l1" >New</div><div class="l2"><input name="ctl00$ContentPlaceHolder1$rptdG$ctl01$tbNew" type="text" id="ctl00_ContentPlaceHolder1_rptdG_ctl01_tbNew" class="answer" onblur="calculateSetColour(1);" /></div> <br />
<div class="l1" >Used</div> <div class="l2"><input name="ctl00$ContentPlaceHolder1$rptdG$ctl01$tbUsed" type="text" id="ctl00_ContentPlaceHolder1_rptdG_ctl01_tbUsed" class="answer" onblur="calculateSetColour(1);" /></div>
<div class="l1" >Compliance</div> <div class="l2"><input name="ctl00$ContentPlaceHolder1$rptdG$ctl01$tbCompliant" type="text" id="ctl00_ContentPlaceHolder1_rptdG_ctl01_tbCompliant" class="result" /></div>
</div>
<div class="reportAltItem">
TOTAL UNITS DELIVERED<BR />
<span id="ctl00_ContentPlaceHolder1_rptdG_ctl02_DlrName">Site 2</span>
<div class="l1" >New</div><div class="l2"><input name="ctl00$ContentPlaceHolder1$rptdG$ctl02$tbNew" type="text" id="ctl00_ContentPlaceHolder1_rptdG_ctl02_tbNew" class="answer" onblur="calculateSetColour(2);"/></div>
<div class="l1" >Used</div><div class="l2"><input name="ctl00$ContentPlaceHolder1$rptdG$ctl02$tbUsed" type="text" id="ctl00_ContentPlaceHolder1_rptdG_ctl02_tbUsed" class="answer" onblur="calculateSetColour(2);"/></div>
<div class="l1" >Compliance</div> <div class="l2"><input name="ctl00$ContentPlaceHolder1$rptdG$ctl02$tbCompliant" type="text" id="ctl00_ContentPlaceHolder1_rptdG_ctl02_tbCompliant" class="result" /></div>
</div>