ASP 日历为 2 月 29 日和 30 日
ASP Calendar with February 29 and 30
我有一个要求,我必须允许用户输入 2 月 29 日和 2 月 30 日作为有效日期。这是出于会计目的,这不是规范,只有特定表格才需要。
现在它是一个数字开放字段,用户手动输入日期,我们不执行任何日期验证,因为它们会失败。
有什么方法可以将这 2 天包含在 ASP 日历控件中,以便用户只需 select 就像他们通常对其他日期所做的那样? (我们在 Visual Studio 2010 年将 C# 与网络表单一起使用)。
我建议使用正则表达式验证器,
这会检查条目在 post 之前的格式是否正确。
看起来像这样
<asp:TextBox runat="server" ID="txt_date_entry"></asp:TextBox>
<asp:RegularExpressionValidator ID="rev_date_entry" runat="server"
ControlToValidate="txt_date_entry" ErrorMessage="Must be Valid Date"
ValidationExpression="**Expression**" Display="Dynamic">
</asp:RegularExpressionValidator>
将表达式替换为您希望与之比较的格式。
下面将检查任何日期格式是否正确(甚至是闰年日期),只要它在 dd/mm/yyyy 或 dd.mm.yyyy 等中。
^(?:(?:31(\/|-|\.)(?:0?[13578]|1[02]))|(?:(?:29|30)(\/|-|\.)(?:0?[1,3-9]|1[0-2])))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:29(\/|-|\.)0?2(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:0?[1-9]|1\d|2[0-8])(\/|-|\.)(?:(?:0?[1-9])|(?:1[0-2]))(?:(?:1[6-9]|[2-9]\d)?\d{2})$
Google 您想要的格式的验证表达式
JavaScript 解析方法示例
function dateValidation()
{
var obj = document.getElementById("<%=txtDate.ClientID%>");
var day = obj.value.split("/")[0];
var month = obj.value.split("/")[1];
var year = obj.value.split("/")[2];
if ((day<1 || day >31) || (month<1&&month>12)&&(year.length != 4))
{
alert("Invalid Format");return false;
}
else
{
var dt = new Date(year, month-1, day);
var today = new Date();
if((dt.getDate() != day) || (dt.getMonth() != month-1) ||(dt.getFullYear()!=year) || (dt>today))
{
alert("Invalid Date");return false;
}
}
}
我有一个要求,我必须允许用户输入 2 月 29 日和 2 月 30 日作为有效日期。这是出于会计目的,这不是规范,只有特定表格才需要。
现在它是一个数字开放字段,用户手动输入日期,我们不执行任何日期验证,因为它们会失败。
有什么方法可以将这 2 天包含在 ASP 日历控件中,以便用户只需 select 就像他们通常对其他日期所做的那样? (我们在 Visual Studio 2010 年将 C# 与网络表单一起使用)。
我建议使用正则表达式验证器,
这会检查条目在 post 之前的格式是否正确。
看起来像这样
<asp:TextBox runat="server" ID="txt_date_entry"></asp:TextBox>
<asp:RegularExpressionValidator ID="rev_date_entry" runat="server"
ControlToValidate="txt_date_entry" ErrorMessage="Must be Valid Date"
ValidationExpression="**Expression**" Display="Dynamic">
</asp:RegularExpressionValidator>
将表达式替换为您希望与之比较的格式。
下面将检查任何日期格式是否正确(甚至是闰年日期),只要它在 dd/mm/yyyy 或 dd.mm.yyyy 等中。
^(?:(?:31(\/|-|\.)(?:0?[13578]|1[02]))|(?:(?:29|30)(\/|-|\.)(?:0?[1,3-9]|1[0-2])))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:29(\/|-|\.)0?2(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:0?[1-9]|1\d|2[0-8])(\/|-|\.)(?:(?:0?[1-9])|(?:1[0-2]))(?:(?:1[6-9]|[2-9]\d)?\d{2})$
Google 您想要的格式的验证表达式
JavaScript 解析方法示例
function dateValidation()
{
var obj = document.getElementById("<%=txtDate.ClientID%>");
var day = obj.value.split("/")[0];
var month = obj.value.split("/")[1];
var year = obj.value.split("/")[2];
if ((day<1 || day >31) || (month<1&&month>12)&&(year.length != 4))
{
alert("Invalid Format");return false;
}
else
{
var dt = new Date(year, month-1, day);
var today = new Date();
if((dt.getDate() != day) || (dt.getMonth() != month-1) ||(dt.getFullYear()!=year) || (dt>today))
{
alert("Invalid Date");return false;
}
}
}