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
>
查看全文
相关阅读:
具体解释协方差与协方差矩阵
百度地图SDK for Android v2.1.3全新发布
奇妙的等式
Canny边缘检测及C++实现
移动火柴问题
移动火柴问题
奇妙的等式 && 精妙的证明(二)
奇妙的等式 && 精妙的证明(二)
拉马努金恒等式
拉马努金恒等式
原文地址:https://www.cnblogs.com/rockniu/p/768583.html
最新文章
很好的理解遗传算法的样例
学习Hadoop不错的系列文章
macOS中Vim基本配置,颜色主题/语法/indent设置
Hadoop集群(第10期)_MapReduce与MySQL交互
Hadoop集群(第9期)_MapReduce初级案例
Hadoop集群(第6期)_WordCount运行详解
Hadoop集群(第4期)_SecureCRT使用
Hadoop集群(第2期)_机器信息分布表
Hadoop集群(第3期)_VSFTP安装配置
Hadoop集群(第1期)_CentOS安装配置
热门文章
Hadoop集群(第8期)_HDFS初探之旅
Codeforces 468B Two Sets 并查集
细说php(六) 数组
windows 删除多层文件夹
SkinSharp用法
《javascript设计模式》读书笔记四(单例模式)
Hadoop Failed to set permissions of path
监听手机录音
android 4.0之前版本号出现JSONException异常
Java的递归算法
Copyright © 2011-2022 走看看