我有一个文本框,我从日历扩展器填写日期,代码如下: -
<label for="input-one" class="float"><strong>Date</strong></label><br />
<asp:TextBox ID="txtDate" runat="server" CssClass="inp-text" Enabled="false" AutoPostBack="true"
Width="300px" ontextchanged="txtDate_TextChanged"></asp:TextBox>
<asp:ImageButton ID="btnDate2" runat="server" AlternateText="cal2"
ImageUrl="~/App_Themes/Images/icon_calendar.jpg" style="margin-top:auto;"
CausesValidation="false" onclick="btnDate2_Click" />
<ajaxToolkit:CalendarExtender ID="calExtender2" runat="server"
Format="dddd, MMMM dd, yyyy"
OnClientDateSelectionChanged="CheckDateEalier"
PopupButtonID="btnDate2" TargetControlID="txtDate" />
<asp:RequiredFieldValidator ID="RequiredFieldValidator7" runat="server"
ControlToValidate="txtDate" ErrorMessage="Select a Date" Font-Bold="True"
Font-Size="X-Small" ForeColor="Red"></asp:RequiredFieldValidator><br />
Javascript代码是: -
function CheckDateEalier(sender, args)
{
sender._textbox.set_Value(sender._selectedDate.format(sender._format))
}
我的要求是,当日期输入文本框时,我想调用此方法:
public void TimeSpentDisplay()
{
string date = txtDate.Text.ToString();
DateTime dateparsed = DateTime.ParseExact(date, "dddd, MMMM dd, yyyy", null);
DateTime currentDate = System.DateTime.Now;
if (dateparsed.Date > currentDate.Date)
{
divtimeSpent.Visible = true;
}
if (dateparsed.Date < currentDate.Date)
{
divtimeSpent.Visible = true;
}
if (dateparsed.Date == currentDate.Date)
{
divtimeSpent.Visible = false;
}
}
请帮助我实现这一点,因为我在txtDate_TextChanged
方法中调用此方法,但事件未在文本框内更改文本时触发。
请建议我如何实现这一目标,或者让我有另一个想法来满足我的要求。
答案 0 :(得分:0)
您必须将文本框的AutoPostBack属性更改为true。
希望这可以帮到你。
答案 1 :(得分:0)
我已修复它,因为我的文本框位于ajax更新面板内,这就是事件未触发的原因。我在该文本框的更新面板中添加了一个触发器,它运行正常。