function validNull(theId,msg)
{
if (document.getElementById(theId).value == "" )
{
window.alert(msg);
document.getElementById(theId).focus();
return false ;
}
return true ;
}
// 某控件不能为某值
function validCant(theId,theValue,msg)
{
if (document.getElementById(theId).value == theValue)
{
window.alert(msg);
document.getElementById(theId).focus();
return false ;
}
return true ;
}
// Email格式验证
function validEmail(theId,msg)
{
var email = /^ [_a - zA - Z0 - 9 + .] + @([_a - zA - Z0 - 9 ] + .) + [a - zA - Z0 - 9 ]{ 2 , 3 }$ / ;
if (email.test(document.getElementById(theId).value))
{
return true ;
}
else
{
window.alert(msg);
document.getElementById(theId).focus();
return false ;
}
}
// 密码验证,不能包含特殊字符<>"'和空格
function validPassword(theId,msg)
{
var reg = /^ [ ^<> ' " ]*$/;
if (reg.test(document.getElementById(theId).value))
{
return true ;
}
else
{
window.alert(msg);
document.getElementById(theId).focus();
return false ;
}
}
// 整数验证
function validInt(theId)
{
var myInt = /^ d * $ / ;
if (myInt.test(document.getElementById(theId).value))
{
return true ;
}
else
{
window.alert(msg);
document.getElementById(theId).focus();
return false ;
}
}
// 两值比较
function validCompare(theId1,theId2,msg)
{
if (document.getElementById(theId1).value == document.getElementById(theId2).value)
{
return true ;
}
else
{
window.alert(msg);
document.getElementById(theId1).focus();
return false ;
}
}
// 字段长度验证(x位至y位)
function validLength(theId,x,y,msg)
{
if (document.getElementById(theId).value.length < x || document.getElementById(theId).value.length > y)
{
window.alert(msg);
document.getElementById(theId).focus();
return false ;
}
return true ;
}
/* 描述: 验证日期 格式####-## */
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;
}
/* 描述: 验证是否为月份 */
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;
}
/* 描述: 验证是否为日 */
function isDay(strDay){
var iDay =parseInt(strDay,10);
if(iDay<0 || iDay>31)
return false;
return true;
}
/* 描述: 验证是否为normal类型*/
function _isnormal(str) {
if (/[^ws一-龥-()]/i.test(str)){
return false;
}
return true;
}
/* 描述: 验证是否为integer类型 */
function _isinteger(str) {
return /^d+$/.test(str)
}
/* 描述: 验证是否为decimal类型 */
function _isdecimal(str){
if (/[^d.]/i.test(str)){
return false;
}
return true;
}
/* 描述: 验证是否为extend类型 */
function _isextend(str) {
if (/[^ws-(-)]/i.test(str)){
return false;
}
return true;
}
/* 描述: 验证是否为date类型 */
function _isdatetime(str){
if(/[^d-]/i.test(str)) {
return false;
}
return true;
}
/* 描述: 验证是否为mail类型 */
function _ismail(str){
if(/[^w一-龥-.@]/i.test(str)) {
return false;
}
return true;
}
/* 描述: 检查对象的输入长度 */
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="";
}
}
}
/* 描述: 输入字符的控制 */
function changeValue(obj,type){
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;
//浮点数
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;
//包含数字、中划线
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;
}
}
/* 描述: 失去焦点后,检查输入是否正确 */
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;
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;
}
}
/* 描述:格式化浮点数 */
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;
}
}
}
/* 描述: 恢复浮点数显示 */
function restoreFormat(obj){
var reg_exp = new RegExp(",","g");
obj.value = obj.value.replace(reg_exp,"");
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);"