Repeater 调用JS问题
//前台代码
<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 文本框中输入 值时,第一条可以自动运算,第二条就不行了,为什么呢?