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 func:
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();
}