// 表单通用检测js by www.it2048.com 整理/制作 h.q.j 2007/1/10
//自定义属性解释(ie支持):
//ii_chname:表示该数据的中文名称
//ii_minsize:表示允许输入的最小长度,单位字节
//ii_maxsize:表示允许输入的最大长度,单位字节
//ii_type:输入的数据类型
//ii_null:表示输入值是否允许为空。为yes时允许为空。
//ii_compare:比交是否与某项(id)值相同
function chkradio(o){
//判断单选
for (i=0;i<o.length;i++){
if (o[i].checked) return true;
}
return false;
}
function strlen(str){
/* 取得字符串的字节长度 */
var i;
var len;
len = 0;
for (i=0;i255) len+=2; else len++;
}
return len;
}
function isnull(str){
/* 检测字符串是否为空 */
var i;
for (i=0;i=0;i --)
isum += (math.pow(2,i) % 11) * parseint(stridno.charat(17 - i),11);
if(isum%11!=1)
{
//alert("非法身份证号");
return false;
}
}
else if (idcardlength==15)
{
sbirthday = "19" + stridno.substr(6,2) + "-" + number(stridno.substr(8,2)) + "-" + number(stridno.substr(10,2));
var d = new date(sbirthday.replace(/-/g,"/"))
var dd = d.getfullyear().tostring() + "-" + (d.getmonth()+1) + "-" + d.getdate();
if(sbirthday != dd)
{
//alert("非法生日");
return false;
}
}
return true;
}
function isip(obj)
{
var re=/^(\d+)\.(\d+)\.(\d+)\.(\d+)$/; //ip正则
if(re.test( obj ))
{
if( regexp.$1 <256 && regexp.$2<256 && regexp.$3<256 && regexp.$4<256) return true;
}
//alert("请输入合法的计算机ip地址");
return false;
}
function verifyinput(input)
{//检测指定自定义元素
var i;
var msg="";
var error = false;
var v=input.value;
if((input.ii_null != undefined)&&(input.ii_null != "")&&(error==false)){
if (input.ii_null=="no"&&isnull(v))
{
//为空校验
msg +="*"+input.ii_chname+"值不能为空\n";
error = true;
}
}
if((input.ii_type != undefined)&&(input.ii_type != "")&&(error==false)){
//检查类型
switch(input.ii_type){
case "en":
if (istype(input.ii_type,v)==false){
msg +="*"+input.ii_chname+"只能输入英文字符\n";
error = true;
}
break;
case "cn":
if (istype(input.ii_type,v)==false){
msg +="*"+input.ii_chname+"只能输入中文字符\n";
error = true;
}
break;
case "num":
if (istype(input.ii_type,v)==false){
msg +="*"+input.ii_chname+"值应该全为数字\n";
error = true;
}
break;
case "int":
if (istype(input.ii_type,v)==false){
msg +="*"+input.ii_chname+"只能输入整数\n";
error = true;
}
break;
case "date":
if (istype(input.ii_type,v)==false){
msg +="*"+input.ii_chname+"填写错误(参考:2000-12-28)\n";
error = true;
}
break;
case "email":
if (istype(input.ii_type,v)==false){
msg +="*"+input.ii_chname+"填写错误(参考:abc@163.com)\n";
error = true;
}
break;
case "card":
if(iscard(v)==false){
msg +="*"+input.ii_chname+"填写错误,请检查\n";
error = true;
}
break;
case "url":
if (istype(input.ii_type,v)==false){
msg +="*"+input.ii_chname+"填写错误(参考:http://www.xxxx.com)\n";
error = true;
}
break;
case "ip":
if(isip(v)==false){
msg +="*"+input.ii_chname+"填写错误,请检查\n";
error = true;
}
break;
case "id1":
if (istype(input.ii_type,v)==false){
msg +="*"+input.ii_chname+"填写错误(允许输入字母、数字和下划线)\n";
error = true;
}
break;
case "id2":
if (istype(input.ii_type,v)==false){
msg +="*"+input.ii_chname+"填写错误(允许输入中文、字母、数字和下划线)\n";
error = true;
}
break;
default : break;
}
}
if((input.ii_minsize != undefined)&&(input.ii_minsize != "")&&(error==false)){
if (strlen(v)parseint(input.ii_maxsize))
{
//最大长度校验
msg +="*"+input.ii_chname+"超出最大长度("+input.ii_maxsize+"个字节)\n";
error = true;
}
}
if((input.ii_compare != undefined)&&(error==false)){
var chv=document.getelementbyid(input.ii_compare).value;
if ((chv != undefined)&&(chv != ""))
{
if(chv != v){
msg +="*"+input.ii_chname+"与"+document.getelementbyid(input.ii_compare).ii_chname+"内容不相符,请检查\n";
error = true;
}
}
}
if(error) alert(msg);
return error;
}
function chkfromall(myform)
{ //检测所有自定义元素
var i;
for (i=0;i<myform.elements.length;i++)
{
if (myform.elements[i].ii_chname==undefined) continue;//跳过非自定义元素
if (verifyinput(myform.elements[i])==true)//检测当前元素
{
myform.elements[i].focus();
return false;
}
}
return true;
}
js通用表单input检测块(ie支持)
通过自定义每一个input的六个新属性(可省略任意个) //自定义属性解释(ie支持): //ii_chname:表示该数据的中文名称 //ii_minsize:表示允许输入的最小长度,单位字节 //ii_maxsize:表示允许输入的最大长度,单位字节 //ii_type:限制输入的数据类型,有 en(英文),cn(中文),num(实数),int(整数),date(短日期),email(邮件) card(身份证),url(网址),ip(ip地址),id1(英文帐号),id2(中英文帐号) //ii_null:表示输入值是否允许为空。为yes时允许为空。 //ii_compare:比交是否与某项(id)值相同 然后有二种检测方式, 一是在input里直接加入onblur="verifyinput(this);" 事件,可即时检测提示 二是在form中onsubmit="return chkfromall(this);",提交才检测 使用可以直接本页内script部份另存为form_common.js包含就可以用,解决绝大部份表单检测 问题,与后台编程语言无关,加快后台程序编写效率,让你我更专注于后台编写 :) 由于众所周知的原因,ff等貌似不支持自定义属性,暂无解决方法(鄙视一下)。要想兼容可以自 写chkfrom函数利用document.getelementbyid('id')和js文件内函数来检测,也会加快效率 这只是我的web程序设计增效工具(eff.studio)的一部份,有朋友需要的话迟点我会公开由表直接自动生成表单工具、自动建立后台(含增加、列表、编辑、删除)的class(因工作需要,暂只做asp版) |
演示表单:
*注册帐号: | |
*登陆密码: | |
*重复密码: | |
*真实姓名: | |
*联系邮件: | |
*联系qq: | |
联系地址: | |
自我简介: | |
[ctrl+a 全选 注:如需引入外部js需刷新才能执行]