【问题标题】:fire a textbox's OnTextChanged while enabled=false在 enabled=false 时触发文本框的 OnTextChanged
【发布时间】:2013-02-01 13:00:42
【问题描述】:

我的文本框附加了一个 ajax 工具包日历扩展器,我试图在将日期输入文本框后触发 OnTextChanged。

问题是我不希望用户手动输入数据,所以我禁用了文本框,但事件不会为禁用的文本框触发。

周围有吗?我考虑过更改为标签,但没有 OnTextChanged 事件。

谢谢

<asp:TableCell CssClass="cssWidth" Width="150px">
            <asp:CalendarExtender ID="CalendarExtender1" PopupButtonID="Image1" runat="server" TargetControlID="TextBoxAddDate" Format="dd/MM/yyyy"></asp:CalendarExtender>
            <asp:TextBox ID="TextBoxAddDate" ReadOnly="true"  CssClass="cssWidth" ToolTip="תאריך הוספה" runat="server" Style="font-size: large;background-color:aliceblue;" AutoPostBack="true" AutoCompleteType="Search" MaxLength="0" TextMode="SingleLine" OnTextChanged="txtSearch_TextChanged" ViewStateMode="Enabled" autocomplete="off" >      
            </asp:TextBox>&nbsp
            <asp:ImageButton runat="Server" ID="Image1"
   ImageUrl="~/Calendar_scheduleHS.png" AlternateText="Click to show calendar" /><br />

        </asp:TableCell>

【问题讨论】:

    标签: c# asp.net


    【解决方案1】:

    你能用 ReadOnly 代替 Enabled = false 吗?

    更新: 好的,这是对我有用的完整解决方案:

    <%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
        CodeBehind="Default.aspx.cs" Inherits="WebApplication1._Default" %>
    <%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="asp" %>
    
    <asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
    <script type="text/javascript">
        function dateSelectionChanged(x) {
            debugger;
            javascript: __doPostBack('TextBoxAddDate', '')
        }
    </script>
    </asp:Content>
    <asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
    <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
        <h2>
            Welcome to ASP.NET!
        </h2>
        <p>
            To learn more about ASP.NET visit <a href="http://www.asp.net" title="ASP.NET Website">www.asp.net</a>.
        </p>
        <p>
            You can also find <a href="http://go.microsoft.com/fwlink/?LinkID=152368&amp;clcid=0x409"
                title="MSDN ASP.NET Docs">documentation on ASP.NET at MSDN</a>.
        </p>
        <asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <ContentTemplate>
                <asp:CalendarExtender ID="CalendarExtender1" PopupButtonID="Image1" runat="server" TargetControlID="TextBoxAddDate" Format="dd/MM/yyyy" OnClientDateSelectionChanged="dateSelectionChanged" ></asp:CalendarExtender>
                <asp:TextBox ID="TextBoxAddDate" CssClass="cssWidth" ToolTip="תאריך הוספה" runat="server" Style="font-size: large;background-color:aliceblue;" AutoCompleteType="Search" MaxLength="0" TextMode="SingleLine" OnTextChanged="txtSearch_TextChanged" ViewStateMode="Enabled"> 
                </asp:TextBox>&nbsp
                <asp:ImageButton runat="Server" ID="Image1"
       ImageUrl="~/Calendar_scheduleHS.png" AlternateText="Click to show calendar" /><br />
       </ContentTemplate>
            </asp:UpdatePanel>
    </asp:Content>
    

    CalendarExtender 似乎“窃取”了它使用的 texbox 中的事件。 使用这种方法,我成功地触发了OnTextChanged 事件并且处理程序txtSearch_TextChanged 被执行。

    【讨论】:

    • 是的没问题,但是当 readonly=true 时事件没有被触发
    • 您是否打开了文本框的 AutoPostBack?
    • 检查我想出的这个解决方案
    【解决方案2】:

    您是否将文本框设为只读?

    【讨论】:

    • 是的,我做到了。当我调试代码并将页面添加到 page_load 但不添加到事件函数的日期时
    猜你喜欢
    • 2011-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多