我在 Gridview 中有一个文本框,并且有一个 javascript 函数在文本框键上工作,称为“ clearNoNum(obj)
”来检查 isnumber,
我已经注册了一个文本框事件(服务器端)' TextBoxChanged
',并且AutoPostBack=true
我的问题是:TextBoxChange
如果在文本框上定义了 onkeyup javascript 函数,则不会触发服务器端事件。
以下是我的代码:
<asp:TemplateField HeaderText="Number" ItemStyle-Width="100px" ItemStyle-HorizontalAlign="Center">
<ItemTemplate>
<asp:TextBox ID="tbxNumber" AutoPostBack="true" onkeyup="clearNoNum(this)" runat="server"
OnTextChanged="tbxNumber_TextChanged" Text='<%#Eval("Number")%>'></asp:TextBox>
</ItemTemplate>
js函数:
function clearNoNum(obj) {
obj.value = obj.value.replace(/[^\d.]/g, "");
obj.value = obj.value.replace(/^\./g, "");
obj.value = obj.value.replace(/\.{2,}/g, ".");
obj.value = obj.value.replace(".", "$#$").replace(/\./g, "").replace("$#$", ".");
}
.cs 事件
protected void tbxNumber_TextChanged(object sender, EventArgs e)
{
TextBox tbxNumber = (TextBox)sender;
GridViewRow gvr = (GridViewRow)tbxNumber.NamingContainer;
Label lblunitsPrice = ((Label)gvr.FindControl("lblunitsPrice"));
Label lblTotalPrice = ((Label)gvr.FindControl("lblTotalPrice"));
lblTotalPrice.Text = (int.Parse(lblunitsPrice.Text) * int.Parse(tbxNumber.Text)).ToString();
}