0

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

1 に答える 1

0

テキスト変更時にイベント (サーバー) を起動すると、ユーザーがキーを離すたびにページのライフ サイクルが実行されます。サーバーにどれだけの負担がかかっているかを考えてください。

テキストボックスで onblur イベントを発生させた方が良いでしょう。Josh によって投稿された有益な回答があります。ここで見つけることができます

于 2012-09-24T06:03:46.657 に答える