对一个textBox进行验证 
就是让它只能输入整数因为需要,它本身有个TextChanged事件问题来了 就是一不小心输个字符 ,它就同时进行验证报错  但也进入了TextChanged事件 因为不是数字 就发生了错误
我想应该是先验证 然后进行TextChanged事件 但不值怎么办恳请大侠们指教  相关代码如下:
 protected void txtodPrice_TextChanged(object sender, EventArgs e)
    {
        double price = double.Parse(txtodPrice.Text.ToString().Trim());
     } 
<td width="80">
<asp:TextBox ID="txtodPrice" runat="server" Width="40px" OnTextChanged="txtodPrice_TextChanged"</asp:TextBox>
<asp:RequiredFieldValidator ID="rfvodPrice" runat="server" Font-Size="9pt" BackColor="#FFFF80"
      ControlToValidate="txtodPrice" Display="Dynamic" ErrorMessage="*">
 </asp:RequiredFieldValidator>
 <asp:CompareValidator ID="cvodPrice" runat="server" Font-Size="9pt" BackColor="#FFFF80"
  ControlToValidate="txtodPrice" Display="Dynamic" ErrorMessage="请输入数字!" Operator="DataTypeCheck"
                    Type="Double"></asp:CompareValidator></td>

解决方案 »

  1.   

    asp.net中非常不建议使用TextChanged事件
    因为走一遍服务器,非常慢
    如果需要,可以用JS实现TextChanged的任务
      

  2.   

    不要这样,这样非常不好.
    这种验证完全可以放在客户端用js实现.
    <script language="javascript">
    function _onkeypress()
    {   
    var re = /[0-9]/i;   
    if (String.fromCharCode(event.keyCode).match(re) == null&& event.keyCode !=46&& event.keyCode !=45)   

    event.returnValue = 0;   
    }   
    }   
    </script>
    </HEAD>
    <body><TR>
    <TD class="td2" align="right" width="20%" style="HEIGHT: 22px">
    <asp:label id="Label5" runat="server">余  额</asp:label></TD>
    <TD class="td2" align="left" style="HEIGHT: 22px">
    <asp:textbox onkeypress="return _onkeypress();" id="txtBalanceP" onblur="this.className=''" onfocus="this.className='colorfocus'"
    runat="server" MaxLength="50" ReadOnly="True" BorderStyle="None"></asp:textbox></TD>
    </TR>
      

  3.   

           if (Page.IsValid)
           {
                 double price = double.Parse(txtodPrice.Text.ToString().Trim());
           }       加一个是否验证 就行了