在文本框焦点上触发Asp.net CalendarExtender

时间:2014-03-25 08:18:55

标签: asp.net textbox onfocus calendarextender

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" />

3 个答案:

答案 0 :(得分:1)

PopupButtonID控件

中删除CalendarExtender属性

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

您可以在弹出按钮单击和文本框焦点上触发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>

单击文本框时应显示日历,单击表单上的任何其他位置后将隐藏日历