使用TextBox TextChanged事件在asp.net中启用或禁用按钮控件

时间:2015-04-07 16:27:14

标签: asp.net vb.net

我正在使用带有TextChanged事件的asp TextBox控件,我的目标是在用户输入文本时捕获文本。如果输入了一个或多个字符,我希望启用一个按钮控件,而无需用户离开TextBox控件。

我在aspx页面上的TextBox的源代码是

<asp:TextBox ID="NewSpendingCategoryTextBox" MaxLength="12" runat="server" 
     AutoPostBack="True" 
     OnTextChanged="NewSpendingCategoryTextBox_TextChanged" 
     ViewStateMode="Enabled" >
</asp:TextBox>

我在后面的代码上的源代码是

Protected Sub NewSpendingCategoryTextBox_TextChanged(sender As Object, e As System.EventArgs) Handles NewSpendingCategoryTextBox.TextChanged
    Dim strSpendingCategoryTextBox As String = Nothing
    strSpendingCategoryTextBox = NewSpendingCategoryTextBox.Text
    If strSpendingCategoryTextBox.Length <= 0 Then
        Me.NewSpendingCategoryInsertButton.Enabled = False
    Else 'strSpendingCategoryTextBox.Length > 0
        Me.NewSpendingCategoryInsertButton.Enabled = True
    End If 'strSpendingCategoryTextBox.Length <= 0
End Sub

所以看来我必须使用javascript来启用或禁用插入按钮。有人可以指导我如何在表格中获取元素吗?该表也位于Panel中。

下面是aspx代码......

<asp:Panel ID="AddSpendingCategoryPanel" Visible="false" runat="server">
    <table class="AddNewTable">
        <tbody>
            <tr>
                <td>
                    <asp:Label ID="lblSpend" runat="server"  
                        Text="Spending Category:">
                    </asp:Label>
                </td>
                <td>
                    <asp:TextBox ID="txtSpend" MaxLength="12"  
                        runat="server" 
                        AutoPostBack="True"
                        OnTextChanged="txtSpend_TextChanged"
                        OnKeyDown="return CheckSpendTextBoxValue()"
                        ViewStateMode="Enabled" >
           </asp:TextBox>
                </td>
            </tr>
            <tr>
                <td>
                    <asp:Button CssClass="frmbtn" ID="btnInsertSpend"  
                        runat="server" Text="Insert" />
                </td>
                <td>
                    <asp:Button CssClass="frmbtn" ID="btnCancelSpend"  
                        runat="server" Text="Cancel"
                        CausesValidation="False" />
                </td>
            </tr>
        </tbody>
    </table>
</asp:Panel>

2 个答案:

答案 0 :(得分:0)

OnKeyPress事件中运行此代码或考虑JavaScript。文本框不会触发Text_Changed事件,直到使用TabEnter

简化布尔检查。

Me.NewSpendingCategoryInsertButton.Enabled = (NewSpendingCategoryTextBox.Text.Length <> 0)

答案 1 :(得分:0)

我不确定你会怎么做。但ASP.NET代码在托管网页的服务器上执行。

我强烈建议在JavaScript上进行,可以在客户端运行。希望这篇文章对你有用。

How to check if a textbox is empty using javascript