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" />
从CalendarExtender
控件中删除PopupButtonID
属性
你需要添加方法,当文本框获得焦点或丢失时触发点击事件。
textBoxId.Attributes.Add("onblur", "ValidatorOnChange(event);")
textBoxId.Attributes.Add("onfocus", "this.click();")
您可以在弹出按钮单击和文本框焦点时触发CalendarExtender。尝试下面的代码行来同时显示文本框和图像单击上的日历。
<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>
当你点击文本框时应该显示日历,一旦你点击表单上的其他地方,日历将被隐藏