简体   繁体   中英

TextBox OnTextChanged / PostBack not working

My problem is that I can't seem to get my textbox to fire the OnTextChanged event. I also checked and it doesn't seem like it is doing an autopostback despite the fact that it is set to true.

Basically, I am trying to validate the text in the textbox and either enable or disable a button based on the validation status.

Here's my code:

<asp:Panel ID="panelAccessControl" runat="server" Visible="false">
    <asp:Panel ID="panelAddMileageRate" runat="server" BorderWidth="2" >
        <h2>Add Mileage Rate</h2>
        <asp:ScriptManager ID="scriptManagerMileageRate" runat="server" />
        <asp:UpdatePanel ID="updatePanelAddMileageRate" runat="server">
            <ContentTemplate>
                <p>
                    Purpose:
                    <asp:DropDownList ID="ddlAddPurpose" runat="server"
                         AutoPostBack="true" Width="200px"></asp:DropDownList>
                    <br />
                    Country:
                    <asp:DropDownList ID="ddlAddCountry" runat="server"
                         AutoPostBack="true" Width="200px" >
                    </asp:DropDownList>
                    <br />
                    Effective Date:
                    <asp:Calendar ID="calAddEffectiveDate" runat="server"> 
                    </asp:Calendar>
                    <br />
                    Mileage Rate:
                    <asp:TextBox ID="txtAddMileageRate" runat="server"
                        AutoPostBack="true" Width="200px" 
                        CausesValidation="true" 
                        ontextchanged="txtAddMileageRate_TextChanged">
                    </asp:TextBox>
                    <asp:RegularExpressionValidator 
                         ID="validatorAddMileageRate"
                         ControlToValidate="txtAddMileageRate" runat="server" 
                         SetFocusOnError="true"
                         ErrorMessage="Only Numbers allowed" 
                         ValidationExpression="^\d{1,20}(\.\d{0,4})?$">
                    </asp:RegularExpressionValidator>
                </p>
            </ContentTemplate>
        </asp:UpdatePanel>
        <p>
            <asp:Button ID="buttonAddSecurityGroup" runat="server" 
                        Text="Submit" onclick="buttonAddSecurityGroup_Click" />
        </p>
    </asp:Panel>
    <asp:Label ID="lblStatus" runat="server" Text=""></asp:Label>
</asp:Panel>

The text box in question is txtAddMileageRate .

Set the EventName property for your txtAddMileageRate AsyncPostBackTrigger to TextChanged .

Add following codes inside your update panel and outside of ContentTemplate

<Triggers>             
  <asp:AsyncPostBackTrigger ControlID="txtAddMileageRate" 
                          EventName="TextChanged" />            
</Triggers>

Other sugguestion:

Have you tried looking at the AutoComplete ( http://www.asp.net/ajax/ajaxcontroltoolkit/samples/autocomplete/autocomplete ) control that is part of the AjaxControlToolKit? Its behaves the same way you want your solution to behave.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM