C# ASP自定义日历控件在回发时消失
我已经创建了一个自定义日历控件,它在大多数情况下都工作得非常完美。我的问题是,每当它发布时,控件就会消失,即使用户仍在悬停。我希望他们能够更改月份、日期等等,而不会消失C# ASP自定义日历控件在回发时消失,c#,javascript,jquery,css,asp.net,C#,Javascript,Jquery,Css,Asp.net,我已经创建了一个自定义日历控件,它在大多数情况下都工作得非常完美。我的问题是,每当它发布时,控件就会消失,即使用户仍在悬停。我希望他们能够更改月份、日期等等,而不会消失divcalendar下拉列表。有什么建议吗 <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="DateTimePickerObject.ascx.cs" Inherits="DateTimePicker.DateTimePickerObject" %&
divcalendar下拉列表。有什么建议吗
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="DateTimePickerObject.ascx.cs" Inherits="DateTimePicker.DateTimePickerObject" %>
<script type="text/javascript">
var canHover = true;
var calendarControl = $(".calendarControl"), flip = $(".divCalendarDropDown"),
state = $.cookie("ToggleStatus");
function setCalendarVisibility(className) {
if (canHover) {
var dropDown = document.getElementById("divCalendarDropDown");
dropDown.className = className;
}
};
function OnClick_Calendar() {
var dropDown = document.getElementById("divCalendarDropDown");
if (dropDown.style.height >= 1) {
canHover = true;
dropDown.className = 'divHidden';
}
else {
canHover = false;
dropDown.className = 'divNormal';
};
};
</script>
<style type="text/css">
.textboxCalendar {
position: relative;
display: block;
width: 215px;
}
.imgCalendar {
position: absolute;
left: 225px;
top: 0px;
margin: 0px 5px 0px 4px;
height: 20px;
width: auto;
}
.imgCalendar:hover {
margin: 0px 7px 0px 4px;
height: 21px;
}
div {
float: left;
width: 250px;
top: 0px;
margin-top: -2px;
-webkit-transition:all ease-in-out 1s;
-moz-transition:all ease-in-out 1s;
-ms-transition:all ease-in-out 1s;
-o-transition:all ease-in-out 1s;
transition:all ease-in-out 1s;
border-collapse: separate;
}
div:hover {
}
.divNormal {
height: 0px;
overflow: visible;
}
.divHidden {
height: 0px;
overflow: hidden;
}
.calendar {
background-color: whitesmoke;
position: relative;
font-family: 'Segoe UI', Tahoma;
opacity: 1;
}
.calendar a {
font-weight: bolder;
}
.calendar th {
font-weight: bold;
color: #2C5A96;
}
.nextPrevStyle {
}
.dayHeaderStyle {
}
.dayStyle {
background-color: #E3ECF7;
}
.otherMonthDayStyle {
background-color: #fbfbfb;
}
.selectedDayStyle {
}
.titleStyle {
background-color: #E3ECF7;
}
.todayDayStyle {
background-color: #fbdf93;
}
.weekendDayStyle {
background-color: #c5d6f1;
}
.calendarControl {
position: relative;
z-index: 1;
height: auto;
width: 252px;
}
</style>
<div class="calendarControl">
<asp:TextBox runat="server" ID="textboxCalendar" onMouseOver="setCalendarVisibility('divNormal');" onMouseOut="setCalendarVisibility('divHidden');" onBlur="textboxCalendar_OnBlur()" ReadOnly="True" CssClass="textboxCalendar"></asp:TextBox>
<span id="spanCalendar" class="spanCalendar"><img id="imgCalendar" src="calendar.png" alt="Calendar" class="imgCalendar" onclick="OnClick_Calendar();"/></span>
<div id="divCalendarDropDown" onMouseOver="setCalendarVisibility('divNormal');" onMouseOut="setCalendarVisibility('divHidden');">
<asp:Calendar runat="server" ID="calendarMain" OnSelectionChanged="calendarMain_SelectionChanged" CssClass="calendar" NextPrevFormat="CustomText" NextMonthText=">>" PrevMonthText="<<" SelectionMode="Day" >
<NextPrevStyle CssClass="nextPrevStyle" />
<DayHeaderStyle CssClass="dayHeaderStyle" />
<DayStyle CssClass="dayStyle" />
<OtherMonthDayStyle CssClass="otherMonthDayStyle" />
<SelectedDayStyle CssClass="selectedDayStyle" />
<TitleStyle CssClass="titleStyle" />
<TodayDayStyle CssClass="todayDayStyle" />
<WeekendDayStyle CssClass="weekendDayStyle" />
</asp:Calendar>
</div>
</div>
var canHover=true;
var calendarControl=$(“.calendarControl”),flip=$(“.divCalendarDropDown”),
状态=$.cookie(“切换状态”);
函数setCalendarVisibility(类名){
如果(可以悬停){
var dropDown=document.getElementById(“divCalendarDropDown”);
dropDown.className=className;
}
};
函数OnClick_Calendar(){
var dropDown=document.getElementById(“divCalendarDropDown”);
如果(dropDown.style.height>=1){
canHover=true;
dropDown.className='divHidden';
}
否则{
canHover=false;
dropDown.className='divNormal';
};
};
.textbox日历{
位置:相对位置;
显示:块;
宽度:215px;
}
.imgCalendar{
位置:绝对位置;
左:225px;
顶部:0px;
保证金:0px 5px 0px 4px;
高度:20px;
宽度:自动;
}
.imgCalendar:悬停{
保证金:0px 7px 0px 4px;
高度:21px;
}
div{
浮动:左;
宽度:250px;
顶部:0px;
页边顶部:-2px;
-webkit过渡:所有的易入易出1;
-moz转换:所有的易进易出1s;
-ms转换:所有输入输出1秒;
-o型转换:所有输入输出1秒;
过渡:所有输入输出1秒;
边界塌陷:分离;
}
div:悬停{
}
.divNormal{
高度:0px;
溢出:可见;
}
.divHidden{
高度:0px;
溢出:隐藏;
}
.日历{
背景色:白烟;
位置:相对位置;
字体系列:“Segoe UI”,塔荷马;
不透明度:1;
}
.日历a{
字体大小:粗体;
}
.日历日{
字体大小:粗体;
颜色:#2C5A96;
}
.nextPrevStyle{
}
dayHeaderStyle先生{
}
.dayStyle{
背景色:#E3ECF7;
}
.Othermonthday风格{
背景色:#fbfb;
}
.选择的日期样式{
}
titleStyle先生{
背景色:#E3ECF7;
}
.今天的风格{
背景色:#fbdf93;
}
.weekendDayStyle{
背景色:#c5d6f1;
}
.日历控件{
位置:相对位置;
z指数:1;
高度:自动;
宽度:252px;
}
我想把它放在评论中,但我还不能;)
我认为您不能使用asp:Calendar控件禁用回发到服务器的功能,因此请尝试向您的DIV“divCalendarDropDown”添加一个默认类
如果这不起作用,我会尝试向那个DIV添加另一个动作,比如onload上的onblur
<div id="divCalendarDropDown" onload="setCalendarVisibility('divNormal');" onMouseOver="setCalendarVisibility('divNormal');" onMouseOut="setCalendarVisibility('divHidden');">
希望这有帮助!JM如果您无法避免回发,那么您可以添加一个
,并编写一些JavaScript,在日历的可见性每次更改时设置其值。然后,当页面加载时,使用JavaScript读取隐藏字段的值,并根据该值设置初始日历可见性。
<div id="divCalendarDropDown" onload="setCalendarVisibility('divNormal');" onMouseOver="setCalendarVisibility('divNormal');" onMouseOut="setCalendarVisibility('divHidden');">