0

I have a text-box in the Gridview, and have a javascript function works on textbox keyup, called "clearNoNum(obj)" to check up isnumber,

I have registered a textbox event(server side) 'TextBoxChanged', and the AutoPostBack=true

My question is: The server side TextBoxChange event would not fired, if have onkeyup javascript function defined on text-box.

Following is my code:

  <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 event

    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();
}
willsonchan
  • 200
  • 2
  • 14

1 Answers1

0

As you are firing an event(Server) on text-change, it will execute page-life cycle on ever time user release the key, think about how much burden you are putting over server.

It would be better you fire event onblur on text-box. There is an inofrmative answer posted by Josh, you may find it here: Lost Focus method for asp.net textbox?

Community
  • 1
  • 1
  • i try it , i set return value on the js func,make it still return false,and i write the __dopost like that `(string jsonblur = "if(clearNoNum(this)){__doPostBack('tbxNumber','onkeyup');}";)`,i guess that return value can stop the postBak~but,i am fail~T_T – willsonchan Sep 24 '12 at 08:21
  • i chang the js like `if (isNaN(obj.value)) {do something}else{ setTimeout(dopostback, 0)}` can i restrict the postback like the link u say? – willsonchan Sep 24 '12 at 09:02