zoukankan
html css js c++ java
ASP.NET 自定义的一个日期验证控件
using
System;
using
System.Collections.Generic;
using
System.Text;
using
System.Web.UI.WebControls;
using
System.IO;
using
System.Reflection;
using
System.Web.UI;
using
System.ComponentModel;
namespace
SmartWebControls
{
/**/
///
<summary>
///
自定义的一个日期验证控件
///
</summary>
[ToolboxData(
"
<{0}:DateVidatetor runat=\
"
server\
"
></{0}:DateVidatetor>
"
)]
public
class
DateVidatetor :BaseValidator
{
//
服务器端double-check
protected
override
bool
EvaluateIsValid()
{
string
value
=
base
.GetControlValidationValue(ControlToValidate);
DateTime dateValue;
if
(DateTime.TryParse(value,
out
dateValue))
{
return
true
;
}
else
{
return
false
;
}
}
[Description(
"
是否必须有值
"
)]
public
bool
MustHasValue
{
get
{
return
ViewState[
"
MustHasValue
"
]
==
null
?
false
: (
bool
)ViewState[
"
MustHasValue
"
];
}
set
{ ViewState[
"
MustHasValue
"
]
=
value; }
}
protected
override
void
AddAttributesToRender(System.Web.UI.HtmlTextWriter writer)
{
base
.AddAttributesToRender(writer);
if
(
base
.RenderUplevel)
{
//
指定客户端验证函数
writer.AddAttribute(
"
evaluationfunction
"
,
"
DateValidatorIsValid
"
);
//
注册自定义属性
writer.AddAttribute(
"
mustHasValue
"
, MustHasValue
?
"
1
"
:
"
0
"
);
}
}
protected
override
void
OnPreRender(EventArgs e)
{
base
.OnPreRender(e);
//
从编译的DLL中取出JavaScript脚本
Stream sm
=
Assembly.GetExecutingAssembly().GetManifestResourceStream(
"
SmartWebControls.Common.js
"
);
string
script;
using
(StreamReader sr
=
new
StreamReader(sm))
{
script
=
sr.ReadToEnd();
}
//
注册客户端JavaScript脚本
if
(
!
Page.ClientScript.IsClientScriptBlockRegistered(
"
SmartWebControls.Common.js
"
))
{
Page.ClientScript.RegisterClientScriptBlock(
this
.GetType(),
"
SmartWebControls.Common.js
"
, script);
}
}
}
}
Javascript文件:
<
script language
=
"
javascript
"
>
<!--
function
DateValidatorIsValid(val)
{
var
value
=
ValidatorGetValue(val.controltovalidate);
var
mustHasValue
=
val.mustHasValue;
if
( value
==
""
)
{
//
alert("Must input a value");
if
(mustHasValue
==
"
1
"
)
return
false
;
else
return
true
;
}
return
checkStringDate(value);
}
function
DateValidator2IsValid(val)
{
var
value
=
ValidatorGetValue(val.txtID);
if
( value
==
""
)
{
//
alert("Must input a value");
if
(mustHasValue
==
"
1
"
)
return
false
;
else
return
true
;
}
return
checkStringDate(value);
}
function
checkStringDate(strDate)
{
var
reg
=/^
(\d
{
4
}
)(\
/
)(\d
{
2
}
)(\
/
)(\d
{
2
}
)
/
;
if
(
!
reg.test(strDate))
{
alert(
"
日期格式不正确!\n正确格式为:2004-01-01
"
);
return
false
;
}
var
ss
=
strDate.split(
"
/
"
);
var
year
=
ss[
0
];
var
monthValue
=
ss[
1
];
if
(monthValue.toString().substring(
0
,
1
)
==
"
0
"
)
{
monthValue
=
monthValue.toString().substring(
1
);
}
var
date
=
ss[
2
];
if
(date.toString().substring(
0
,
1
)
==
"
0
"
)
{
date
=
date.toString().substring(
1
);
}
if
(
!
checkYear(year))
{
return
false
;}
if
(
!
checkMonth(monthValue))
{
return
false
;}
if
(
!
checkDate(year,monthValue,date))
{
return
false
;}
return
true
;
}
function
checkYear(year)
{
if
(isNaN(parseInt(year)))
{
alert(
"
年份输入有误,请重新输入!
"
);
return
false
;
}
else
if
(parseInt(year)
<
1950
||
parseInt(year)
>
2050
)
{
alert(
"
年份应该在1950-2050之间!
"
);
return
false
}
else
return
true
;
}
function
checkMonth(monthValue)
{
if
(isNaN(parseInt(monthValue)))
{
alert(
"
月份输入有误,请重新输入!
"
);
return
false
;
}
else
if
(parseInt(monthValue)
<
1
||
parseInt(monthValue)
>
12
)
{
alert(
"
月份应该在1-12之间!
"
);
return
false
}
else
return
true
;
}
function
checkDate(year, monthValue, date)
{
var
daysOfMonth
=
calcDays(parseInt(year),parseInt(monthValue));
if
(isNaN(parseInt(date)))
{
alert(
"
日期输入有误,请重新输入!
"
);
return
false
;
}
else
if
(parseInt(date)
<
0
||
parseInt(date)
>
daysOfMonth)
{
alert(
"
日期应该在1-
"
+
daysOfMonth
+
"
之间!
"
);
return
false
;
}
else
return
true
;
}
function
calcDays(year, monthValue)
{
var
date
=
new
Date(year,monthValue,
0
);
return
date.getDate();
}
function
isLeapYear(year)
{
if
( (year
%
4
==
0
&&
year
%
100
!=
0
)
||
(year
%
400
==
0
))
return
true
;
else
return
false
;
}
//
-->
</
script
>
查看全文
相关阅读:
Web service是什么?
SQL截取字符串
SQL Server中使用索引性能的比较
一个C#中webservice的初级例子(一)
short s1 = 1; s1 = s1 + 1;有错而short s1 = 1; s1 += 1正确。为何?
SQL索引
ORDER BY 子句在子查询和公用表表达式中无效的一种解决办法使用表变量
创建 索引,
时间的重叠
SQLServer Datetime数据类型的转换
原文地址:https://www.cnblogs.com/rockniu/p/768583.html
最新文章
(转).NET委托:一个C#睡前故事
JavaScript学习之三JavaScript浏览器对象模型详解document对象
回忆我是怎样走上程序之路的(下)打了院长毅然辞职
分享下这几年收藏的经典电子书下载
JavaScript学习之二JavaScript浏览器对象模型详解window对象(下)
JavaScript游戏引擎列表
(转)一声叹息
30个Web下拉菜单
sort使用
hdu 2491 Priest John's Busiest Day(动态规划之贪心)
热门文章
hdu 2522 (模拟除法)
poj 1094 Sorting It All Out
hdu1865 1sting
hdu 1009 FatMouse' Trade (动态规划之贪心)
hdu1285 确定比赛名次
hdu 2525 Clone Wars
hdu 2682 Tree
hdu2955 Robberies (动态规划之背包)
SQL Server创建索引
学习网址
Copyright © 2011-2022 走看看