如何确认预选日期没有节更改事件

本文关键字:事件 日期 何确认 确认 | 更新日期: 2023-09-27 18:11:02

我的是c# web应用程序。我有一个日历控件,默认将今天作为所选日期。问题是,如果用户单击所选日期,那么由于没有更改日期时,SelectedChanged不会触发。没有其他的控制事件触发。如何确认用户选择了预先确定日期吗?

protected void Calendar1_SelectionChanged(object sender, EventArgs e)
        {               
            if (ddlCityNames.SelectedIndex == 0 || ddlHotelNames.SelectedIndex == 0)
            {
                if(ddlCityNames.SelectedIndex==0)
                    Page.ClientScript.RegisterClientScriptBlock(typeof(Page), "Script", "alert('Select City');", true);   
                else
                    Page.ClientScript.RegisterClientScriptBlock(typeof(Page), "Script", "alert('Select Hotel');", true);
            }
           }

当用户改变选择时调用。但如果他选择了一个日期,这个验证被调用,他之前做的选择仍然在那里,但点击那个选择什么也不做。当我选择另一个日期并在该日期再次访问时,这是有效的,但之前选择的日期呢?

如何确认预选日期没有节更改事件

看看您的代码,将您的服务器端验证逻辑移植到客户端会更好。本质上,您必须连接到支持输入(日历控制)的blur事件并验证您的下拉列表。这也将消除日期选择的回发。

在服务器端,应该在使用所有数据的地方进行验证—例如,如果您在填写酒店、城市和日期之后调用搜索,则在Search按钮进行验证。

编辑:

下面是一些示例代码(基于jquery),可以帮助您入门。而不是日历控件(其标记我不熟悉),我假设您正在使用AJAX工具箱日历扩展器或一些基于java脚本的UI,如jquery日期选择器,这将是我的首选)。使用这两种方法,您都可以完全控制后备输入字段。在AJAX工具包中,标记会是类似于 的东西
<asp:TextBox runat="server" ID="Date1" />
<ajaxToolkit:Calendar runat="server" TargetControlID="Date1" />
现在您可以在标记(aspx)文件中使用以下脚本:
$(document).ready(function() {
   var date = $('#<%= Date1.ClientID %>');
   var city = $('#<%= ddlCityNames.ClientID %>');
   var hotel = $('#<%= ddlHotelNames.ClientID %>');
   date.blur(function() {
     // check if date has been selected
     if (date.val() != '') {
       if (city.val() == '') { // **** put value at index zero that you use for no-selection
          alert('Select City');
       }
       else if (hotel.val() == '') {
          alert('Select Hotel');
       }
     }
   });
});