【问题标题】:Trigger Asp.net CalendarExtender on textbox focus在文本框焦点上触发 Asp.net CalendarExtender
【发布时间】:2014-03-25 08:18:55
【问题描述】:

CalendarExtender 触发目标点击事件。因此,如果您需要在文本框获得焦点时打开日历扩展器(例如使用 TAB 键),它不会单独工作。

<asp:textbox id="textBoxId" runat="server" />
<asp:RangeValidator id="valDatumRG" ControlToValidate="textBoxId" Type="Date" ... ValidationGroup="valGr" Display="dynamic" runat="server" />
<ajaxToolkit:CalendarExtender ID="cldExtTermin" runat="server" TargetControlID="textBoxId" PopupButtonID="textBoxId" />

【问题讨论】:

    标签: asp.net textbox onfocus calendarextender


    【解决方案1】:

    CalendarExtender 控件中删除PopupButtonID 属性

    【讨论】:

    • 大声笑。这当然是最简单的方法。谁会说不需要 pupup 控制。
    【解决方案2】:

    您需要添加在 texbox 获得焦点或丢失时触发点击事件的方法。

     textBoxId.Attributes.Add("onblur", "ValidatorOnChange(event);") 
     textBoxId.Attributes.Add("onfocus", "this.click();") 
    

    【讨论】:

      【解决方案3】:

      您可以在弹出按钮单击和文本框焦点时触发 CalendarExtender。尝试使用以下代码行在 Textbox 和 Image click 上显示日历。

      <asp:TextBox runat="server" onclick="showCalendar();" onfocusout="showCalendar();" ID="txtDate" />
          <asp:ImageButton runat="Server" ID="imgPopup" AlternateText="Click to show calendar" />
          <cc1:CalendarExtender ID="CalendarExtender1" runat="server" TargetControlID="txtDate" CssClass="MyCalendar" Format="MMMM d, yyyy" PopupButtonID="imgPopup" />
      

      并添加一个像这样的javascript函数

      <script type="text/javascript">
              function showCalendar() {
             $( "#<%=imgPopup.ClientID %>" ).trigger( "click" ); //I've used .ClientID here just in case your page is inherited from a Master page
          }
          </script>
      

      当你点击文本框时应该会显示日历,一旦你点击表单上的其他任何地方,日历就会被隐藏

      【讨论】:

        猜你喜欢
        • 2014-01-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-05
        • 1970-01-01
        • 2010-10-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多