/*
描述: 验证日期 格式####-##
*/
function
isDateNY(str)
{
var
d
=
new
Date();
var
y
=
d.getFullYear();
var
m
=
d.getMonth()
+
1
;
m
=
(
"
00
"
+
m).substr((m
+
""
).length);
var
a
=
str.match(
/^
(d{
4
})(
-|
/
)(d{
2
})$
/
);
if
((
!
a)
||
(parseInt(str.substr(
5
,
2
),
10
)
>
12
)
||
(parseInt(str.substr(
5
,
2
),
10
)
<
1
))
{
return
false
;
}
return
true
;
}
/*
描述: 验证是否是浮点数
*/
function
isDecimal(str) {
if
(
!/^
d
+
.d
*
$
/
.test(str)){
return
false
;
}
return
true
;
}
/*
描述: 验证是否为年份
*/
function
isYear(strYear){
var
iYear
=
parseInt(strYear,
10
);
if
(iYear
<
1900
||
iYear
>
9000
)
return
false
;
return
true
;
}
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
/*
描述: 验证是否为月份
*/
function
isMonth(strMon){
var
iMon
=
parseInt(strMon,
10
);
if
(iMon
<
0
||
iMon
>
12
)
return
false
;
return
true
;
}
/*
描述:是否是整数
*/
function
isNumber(str) {
for
(
var
i
=
0
;i
<
str.length;i
++
)
if
(str.charCodeAt(i)
<
0x0030
||
str.charCodeAt(i)
>
0x0039
)
return
false
;
return
true
;
}
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
/*
描述: 验证是否为日
*/
function
isDay(strDay){
var
iDay
=
parseInt(strDay,
10
);
if
(iDay
<
0
||
iDay
>
31
)
return
false
;
return
true
;
}
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
/*
描述: 验证是否为normal类型
*/
function
_isnormal(str) {
if
(
/
[
^
ws一
-
龥
-
()]
/
i.test(str)){
return
false
;
}
return
true
;
}
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
/*
描述: 验证是否为integer类型
*/
function
_isinteger(str) {
return
/^
d
+
$
/
.test(str)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
}
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
/*
描述: 验证是否为decimal类型
*/
function
_isdecimal(str){
if
(
/
[
^
d.]
/
i.test(str)){
return
false
;
}
return
true
;
}
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
/*
描述: 验证是否为extend类型
*/
function
_isextend(str) {
if
(
/
[
^
ws
-
(
-
)]
/
i.test(str)){
return
false
;
}
return
true
;
}
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
/*
描述: 验证是否为date类型
*/
function
_isdatetime(str){
if
(
/
[
^
d
-
]
/
i.test(str)) {
return
false
;
}
return
true
;
}
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
/*
描述: 验证是否为mail类型
*/
function
_ismail(str){
if
(
/
[
^
w一
-
龥
-
.@]
/
i.test(str)) {
return
false
;
}
return
true
;
}
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
/*
描述: 检查对象的输入长度
*/
function
checkLength(obj,length){
var
tempValue
=
obj.value;
if
(obj.value.Tlength()
>
length){
createInfoPop(
"
输入长度不能大于
"
+
length,obj,
200
,
50
);
obj.value
=
obj.value.substr(
0
,length);
if
(tempValue
==
obj.value){
obj.value
=
""
;
}
}
}
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
/*
描述: 输入字符的控制
*/
function
changeValue(obj,type){
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
switch
(type){
//
包含数字、字母、汉字、下载线、中划线、()
case
"
normal
"
:
if
(
!
_isnormal(obj.value)){
createInfoPop(
"
只能包含数字、字母、汉字、下划线、中划线、空格、()
"
,obj,
200
,
50
);
obj.value
=
obj.value.replace(
/
[
^
ws一
-
龥
-
()]
/
g,
""
);
}
break
;
//
整数
case
"
integer
"
:
if
(obj.value
==
""
)
break
;
if
(
!
_isinteger(obj.value)){
createInfoPop(
"
只能包含数字
"
,obj,
200
,
50
);
obj.value
=
obj.value.replace(
/
D
/
g,
""
);
}
break
;
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
//
浮点数
case
"
decimal
"
:
if
(
!
_isdecimal(obj.value)){
createInfoPop(
"
只能包含数字、小数点
"
,obj,
200
,
50
);
obj.value
=
obj.value.replace(
/
[
^
d.]
/
,
""
);
}
break
;
//
包含数字、字母、下载线、中划线、()
case
"
extend
"
:
if
(
!
_isextend(obj.value)){
createInfoPop(
"
只能包含数字、字母、下划线、中划线、()
"
,obj,
200
,
50
);
obj.value
=
obj.value.replace(
/
[
^
ws
-
()]
/
g,
""
);
}
break
;
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
//
包含数字、中划线
case
"
date
"
:
if
(
!
_isdatetime(obj.value)){
createInfoPop(
"
只能包含数字、中划线
"
,obj,
200
,
50
);
obj.value
=
obj.value.replace(
/
[
^
d
-
]
/
g,
""
);
}
break
;
//
包含数字、汉字、下划线、中划线、·、@
case
"
email
"
:
if
(
!
_ismail(obj.value)){
createInfoPop(
"
只能包含数字、字母、汉字、下划线、中划线、.、@
"
,obj,
200
,
50
);
obj.value
=
obj.value.replace(
/
[
^
w一
-
龥
-
@.]
/
g,
""
);
}
break
;
}
}
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
/*
描述: 失去焦点后,检查输入是否正确
*/
function
blurValue(obj,type,length,prec){
if
(
!
prec) prec
=
2
;
//
默认精度为2
if
(obj.value
==
""
)
return
false
;
switch
(type){
case
"
decimal
"
:
if
(obj.value.indexOf(
"
.
"
)
==-
1
){
if
( _isinteger(obj.value)){
if
(obj.value.length
>
(length
-
prec)){
createInfoPop(
"
整数部分长度不能大于
"
+
(length
-
prec)
+
"
位
"
,obj,
200
,
50
);
obj.value
=
""
;
break
;
}
else
{
obj.value
+=
"
.
"
+
repeatStr(
"
0
"
,prec);
}
}
}
else
{
if
(obj.value.substr(
0
,obj.value.indexOf(
"
.
"
)).length
>
(length
-
prec)){
createInfoPop(
"
整数部分长度不能大于
"
+
(length
-
prec)
+
"
位
"
,obj,
200
,
50
);
obj.value
=
""
;
break
;
}
if
(obj.value.substr(obj.value.indexOf(
"
.
"
)
+
1
).length
<
prec){
obj.value
+=
repeatStr(
"
0
"
,prec
-
obj.value.substr(obj.value.indexOf(
"
.
"
)
+
1
).length);
}
}
if
(
!
isDecimal(obj.value)){
createInfoPop(obj.value
+
"
不是浮点数
"
,obj,
200
,
50
);
obj.value
=
""
;
break
;
}
checkLength(obj,length
+
1
);
if
(obj.value.substr(obj.value.indexOf(
"
.
"
)).Tlength()
>
(prec
+
1
)){
createInfoPop(
"
精度不能大于
"
+
prec,obj,
200
,
50
);
obj.value
=
obj.value.substr(
0
,obj.value.indexOf(
"
.
"
)
+
prec
+
1
);
}
//
格式化数字的格式
formatDecimal(obj);
break
;
case
"
integer
"
:
if
(isNumber(obj.value)){
if
(obj.value.length
>
length){
createInfoPop(
"
长度不能大于
"
+
length,obj,
200
,
50
);
obj.value
=
""
;
}
}
else
{
createInfoPop(obj.value
+
"
不是整数
"
,obj,
200
,
50
);
obj.value
=
""
;
}
break
;
case
"
date
"
:
if
(
!
isDate(obj.value)){
createInfoPop(obj.value
+
"
不是日期格式<br> 格式:(####-##-##)
"
,obj,
200
,
50
);
obj.value
=
""
;
}
break
;
case
"
email
"
:
if
(
!
isEmail(obj.value)){
createInfoPop(
"
email 格式不正确
"
,obj,
200
,
50
);
obj.value
=
""
;
break
;
}
checkLength(obj,length);
break
;
case
"
cbo
"
:
//
-----------------------------------------------------------------------------
//
说明:当类型为cbo时,length属性改为cboName
//
-----------------------------------------------------------------------------
var
cboObj;
var
sValue;
cboObj
=
document.all.item(length);
sValue
=
""
;
if
(obj.value.Tlength()
<=
0
){
break
;
}
for
(
var
i
=
0
;i
<
cboObj.options.length;i
++
)
{
if
(obj.value
==
cboObj.options[i].value)
{
sValue
=
obj.value
+
"
-
"
+
cboObj.options[i].text;
break
;
}
else
if
(obj.value
==
cboObj.options[i].text)
{
sValue
=
cboObj.options[i].value
+
"
-
"
+
obj.value;
break
;
}
else
if
(obj.value
==
(cboObj.options[i].value
+
"
-
"
+
cboObj.options[i].text))
{
sValue
=
cboObj.options[i].value
+
"
-
"
+
cboObj.options[i].text;
break
;
}
}
obj.value
=
sValue;
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
break
;
//
-----------------------------------------------------------------------------
//
简短日期格式
case
"
date_NY
"
:
if
(obj.value.substr(
0
).length
<
4
)
{
obj.value
=
""
;
break
;
}
if
(obj.value.substr(
0
).length
==
4
)
{
obj.value
+=
"
-01
"
;
break
;
}
if
(obj.value.indexOf(
"
-
"
)
!=
"
-1
"
)
{
if
(obj.value.substr(
0
,obj.value.indexOf(
"
-
"
)).length
<
4
)
{
obj.value
=
""
;
break
;
}
if
(obj.value.substr(obj.value.indexOf(
"
-
"
)
+
1
).length
<
2
)
{
if
(obj.value.substr(obj.value.indexOf(
"
-
"
)
+
1
)
==
""
)
{
obj.value
=
obj.value.substring(
0
,obj.value.indexOf(
"
-
"
))
+
"
-01
"
;
break
;
}
if
(eval(obj.value.substr(obj.value.indexOf(
"
-
"
)
+
1
))
<
1
)
{
obj.value
=
obj.value.substring(
0
,obj.value.indexOf(
"
-
"
))
+
"
-01
"
;
}
else
{
obj.value
=
obj.value.substring(
0
,obj.value.indexOf(
"
-
"
))
+
"
-0
"
+
obj.value.substr(obj.value.indexOf(
"
-
"
)
+
1
);
}
}
}
if
(isDateNY(obj.value)
==
false
)
{
createInfoPop(
"
日期必须符合日期格式!
"
,obj,
250
,
28
);
obj.value
=
""
;
obj.focus();
}
break
;
case
"
nullmode
"
:
checkLength(obj,length);
break
;
}
}
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
/*
描述:格式化浮点数
*/
function
formatDecimal(obj){
var
precStr
=
""
;
var
reg_exp;
reg_exp
=
new
RegExp(
"
^0+([1-9].+|0..+)
"
,
"
g
"
);
obj.value
=
obj.value.replace(reg_exp,
"
$1
"
);
precStr
=
obj.value.substr(obj.value.indexOf('.'));
if
(obj.value.length
>
0
){
var
num
=
parseInt(obj.value,
10
);
if
(num
>=
1000
)
{
var
number_string
=
Math.abs(num).toString();
var
insert_position;
switch
(number_string.length
%
3
)
{
case
1
:insert_position
=
1
;
break
;
case
2
:insert_position
=
2
;
break
;
case
0
:insert_position
=
3
;
break
;
}
while
(insert_position
<
number_string.length)
{
number_string
=
number_string.left(insert_position)
+
"
,
"
+
number_string.substring(insert_position);
insert_position
+=
4
;
}
obj.value
=
number_string
+
precStr;
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
}
}
}
/*
描述: 恢复浮点数显示
*/
function
restoreFormat(obj){
var
reg_exp
=
new
RegExp(
"
,
"
,
"
g
"
);
obj.value
=
obj.value.replace(reg_exp,
""
);
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
if
(obj.value.indexOf(
"
.
"
)
!=-
1
){
var
j
=
1
;
for
(i
=
obj.value.substr(obj.value.indexOf(
"
.
"
)).length
-
1
;i
>
0
;i
--
){
if
(obj.value.substr(obj.value.indexOf(
"
.
"
)
+
i,
1
)
==
"
0
"
){
j
+=
1
;
}
else
{
break
;
}
}
i
=
obj.value.substr(obj.value.indexOf(
"
.
"
)).length;
obj.value
=
obj.value.substr(
0
,obj.value.indexOf(
"
.
"
)
+
i
-
j
+
1
);
}
with
(document.selection.createRange())
{
moveStart(
"
character
"
,obj.value.length
+
1
);
collapse();
select();
}
}
具体调用如下:
changeValue (obj,type)
描述:输入字符的控制
说明:
obj:需检查的客户端控件
type:输入类型
{normal: 包含数字、字母、汉字、下载线、中划线、()}
{integer:包含数字}
{decimal:包含数字、小数点}
{extend: 包含数字、字母、下载线、中划线、()}
{date: 包含数字、中划线}
{email: 包含数字、汉字、下划线、中划线、小数点、@}
样例:
1) 邮件格式检测
<input type=”button” name=”txtMail” onKeyup=”changeValue(this,’email’);” >
2) 日期格式检测
<input type=”button” name=”txtDate” onKeyup=”changeValue(this,’date’);” >
3) 浮点数检测
<input type=”button” name=”txtNumber” onKeyup=”changeValue(this,’decimal’);” >
blurValue(obj,type,length,prec)
描述:失去焦点后,检查输入是否正确
说明:
obj:需检查的客户端控件
type:输入类型
{decimal:验证输入值是否是浮点数及格式化浮点数、检查长度}
{date:验证输入值是否是日期格式及格式化日期但无需检查长度}
{email:验证输入值是否是email格式、检查长度}
{nullmode:仅检查输入值的长度}
length:最大输入长度
prec:小数位精度,默认2位
样例:
1) 浮点数
<input type=”button” name=”txtMail” onBlur=”blurValue(this,’decimal’,10,3);” >
2) 日期
<input type=”button” name=”txtDate” onBlur=”blurValue(this,’date’);” >
3) 邮件地址
<input type=”button” name=”txtMail” onBlur=”blurValue(this,’email’,20);” >
4) 仅检测长度
<input type=”button” name=”txt1” onBlur=”blurValue(this,’nullmode’,20);” >
注:changValue与blurValue配合使用
如果是浮点数检测还要与restoreFormat配合使用
restoreFormat(obj)
描述:恢复浮点数显示
说明:内部函数,将格式化过的数据赋给obj.value对象
样例:<input type=”button”name=”txt1” onFocus=”restoreFormat(this);”>
另外在Asp.Net中调用方法如下:
txtCJG.Attributes("onblur") = "javascript:blurValue(this,'cbo','cboCJG');"
txtCBSYR.Attributes("onkeyup") = "javascript:changeValue(this,'normal');"
txtCBSYR.Attributes("onblur") = "javascript:blurValue(this,'nullmode',80);"