我的是c#web应用程序。 我有一个日历控件,默认为今天作为选定的日期。 问题是,如果用户点击所选日期,那么因为没有 更改SelectedChanged不会触发的日期。没有其他控制 发生的事件。如何确认用户选择a 预选日期?
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);
}
}
当用户更改他的选择时调用此方法。但是如果他选择了一个日期并且调用了这个验证,那么他之前做出的选择之后就是stil但是点击那个选择什么都不做。当我选择另一个时日期并在该日期再次出现,但是之前选择的日期呢?
答案 0 :(得分:0)
查看您的代码,通过在客户端移植服务器端验证逻辑,您会更好。基本上,您必须连接到blur
事件的支持输入(日历控制)并验证您的下拉菜单。这也将消除日期选择上的回复。
在服务器端,验证应该在将使用所有数据的地方完成 - 例如,如果您在酒店,城市和日期填写后调用搜索,则需要Search
按钮。
编辑:
这里有一些示例代码(基于jquery),可以帮助您入门。而不是Calender控件(我不熟悉它的标记),我假设你正在使用AJAX Toolkit Calender Extender或一些基于java脚本的UI,例如jquery date-picker,这将是我的首选方式)。使用这两种方法,您可以完全控制后备输入字段。
因此,使用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');
}
}
});
});