Repeater 调用JS问题

luomaxiaoyao1314 2010-11-01 09:31:21
//前台代码
<asp:Repeater ID="Repeater1" runat="server"
onitemdatabound="Repeater1_ItemDataBound" >
<ItemTemplate>
<tr>
<td><asp:CheckBox ID="CheckBox2" runat="server" /></td>
<td><%#Eval("nid")%></td>
<td><%#Eval("ItemId")%></td>
<td><asp:Label ID="lbltm" runat="server" Text='<%#Eval("CommodityCode") %>'></asp:Label></td>
<td><asp:Label ID="lblhm" runat="server" Text='<%#Eval("ItmeName")%>'></asp:Label></td>
<td><asp:Label ID="kucun1" runat="server" Text='<%#Eval("CanOrder") %>'></asp:Label></td>
<td><asp:Label ID="lbldw" runat="server" Text='<%#Eval("Unit")%>'></asp:Label></td>
<td><asp:Label ID="price1" runat="server" Text='<%#Eval("Retail")%>'></asp:Label></td>
<td><asp:Label ID="zekou1" runat="server" Text='<%#Eval("zkl")%>'></asp:Label></td>
<td><asp:TextBox ID="txtnumber1" runat="server"></asp:TextBox> </td>
<td><asp:Label ID="totlePrice1" runat="server" ></asp:Label></td>
</tr>
</ItemTemplate>
</asp:Repeater>

//后台代码


protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
foreach (RepeaterItem Item in Repeater1.Items)
{
TextBox tb = (TextBox)Item.FindControl("txtnumber1");//订购数量
Label lblprice = (Label)Item.FindControl("price1");//零售价
Label lblzekou = (Label)Item.FindControl("zekou1");//折扣率
Label lblzje = (Label)Item.FindControl("totlePrice1");//总金额
Label lblkgsl = (Label)Item.FindControl("kucun1");//可订购数量

if (tb != null && lblprice != null && lblzekou != null && lblzje != null)
{
if (!string.IsNullOrEmpty(tb.Text))
{
tb.Text = "0";
}


StringBuilder script = new StringBuilder();
//输入数值之后总自动金额更新
script.Append(" var amount=0;");
script.Append(" vOrderNumber=document.getElementById('" + tb.ClientID + "');");//订购数量
script.Append(" vprice=document.getElementById('" + lblprice.ClientID + "');");//零售价
script.Append(" vdiscount=document.getElementById('" + lblzekou.ClientID + "');");//折扣率
script.Append(" vtotalAmount=document.getElementById('" + lblzje.ClientID + "');");//总金额
script.Append(" vnumber=document.getElementById('" + lblkgsl.ClientID + "');");//可订购数量
script.Append("if(parseFloat(vOrderNumber.value)>parseFloat(vnumber.innerText)){");
script.Append("alert('订购数量不能大于商品的可订购数量,请重新输入!');return;}");
script.Append("var amount=(parseFloat(vOrderNumber.value)*parseFloat(vprice.innerText))*parseFloat(vdiscount.innerText);");
script.Append("vtotalAmount.innerText=amount;");


//只允许输入带小数的数字.
string scriptOnKeyPress = @"return /^[1-9]\d{9}/.test(this.value)?(/\./.test(this.value)?(/\.\d{2}/.test(this.value)?(event.keyCode==0):(event.keyCode>=48&&event.keyCode<=57)):(event.keyCode==46)):(event.keyCode>=48&&event.keyCode<=57)";


tb.Attributes.Add("onblur", script.ToString());
tb.Attributes.Add("onkeypress", scriptOnKeyPress);
}
}
}

运行时在 txtnumber1 文本框中输入 值时,第一条可以自动运算,第二条就不行了,为什么呢?
...全文
125 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
shaoliang520xi 2010-11-01
  • 打赏
  • 举报
回复
你查看源代码看下,是不是每个文本都绑定了值了。还有你这样的话,你的JS不是要生成N个吗??你能决定是唯一的吗?
IHandler 2010-11-01
  • 打赏
  • 举报
回复
可能脚本有bug,用FF或IE8/9调试一下

62,272

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧