如何确认预选日期没有节更改事件
本文关键字:事件 日期 何确认 确认 | 更新日期: 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');
}
}
});
});