重庆育才中学招聘会:Js+Xml打造通用表单验证
来源:百度文库 编辑:九乡新闻网 时间:2024/04/24 11:52:43
首先有一份XML文件保存每个表单要验证的选项
接下来在表单页面中加载这个通用的JS代码
FormConfig.Xml
-----------------------------------------------
Xml文件说明
Form指定要检测的表单名
item index为自动编号 art0表单元素名. atr1同名表单项个数 atr2检测类型(现暂只支持数字,日期,备注,字符),atr3最小长度(0表示可以不填,对于日期型1表示后台程序自动处理,不检测,大于1表示强制用户输入) atr4最大长度
示例表单:
----------------------------------------------------------
-----------------------------------------------------------
比如上面的表单对应了xml中的fm2其中jsName指JS检测表单项不符要求后提示的名称.可自定义
通用Js代码:
----------------------------------------------------------------
function check(fm)
{
var submitIF=CheckItem(fm);
if(submitIF)
{
fmFill.submit();
}
}
function CheckItem(fm)
{
var xmlDoc = new ActiveXObject("Msxml2.DOMDocument");
xmlDoc.async= false;
xmlDoc.load("tstXml/config.xml");
var root = xmlDoc.selectNodes("//root/item[@fm=\'" + fm + "\'");
var re = /[0-9]$/;
var tt = true;
var ck = false;
for(i=0;i {
//若项为字符型
if(root.item(i).attributes(3).value.toUpperCase() == "C")
{
//若项必填,且项数大于1
if(root.item(i).attributes(2).value >1 && root.item(i).attributes(4).value >0)
{
for(k=1;k<=root.item(i).attributes(2).value;k++)
{
ck = ck || document.all.item(root.item(i).attributes(1).value + "_" + k).checked;
}
if(ck == false)
{
alert("你必须从" + k + "个选项中选择至少一项" + document.all.item(root.item(i).attributes(1).value + "_1").jsName);
return false;
}
}
//若项必填,且项数=1
if(root.item(i).attributes(4).value > 0 && root.item(i).attributes(2).value == 1)
{
if(document.all.item(root.item(i).attributes(1).value).value.lengthroot.item(i).attributes(5).value)
{
alert("项" + document.all.item(root.item(i).attributes(1).value).jsName + "必填 最小长度不能小于" + root.item(i).attributes(4).value + " 且最大长度不能大于" +root.item(i).attributes(5).value);
return false;
}
}
//若项为选填只需检测最大长度是否超过设定
if(root.item(i).attributes(4).value = 0)
{
if(document.all.item(root.item(i).attributes(1).value).value.length>root.item(i).attributes(5).value)
{
alert("项" + document.all.item(root.item(i).attributes(1).value).jsName + " 最大长度不能大于" +root.item(i).attributes(5).value);
return false;
}
}
}
//若项为备注型
if(root.item(i).attributes(3).value.toUpperCase() == "N")
{
//若项必填
if(root.item(i).attributes(4).value > 0 && root.item(i).attributes(2).value == 1)
{
if(document.all.item(root.item(i).attributes(1).value).value.lengthroot.item(i).attributes(5).value)
{
alert("项" + document.all.item(root.item(i).attributes(1).value).jsName + "必填 最小长度不能小于" + root.item(i).attributes(4).value + " 且最大长度不能大于" +root.item(i).attributes(5).value);
return false;
}
}
//若项为选填只需检测最大长度是否超过设定
if(root.item(i).attributes(4).value = 0)
{
if(document.all.item(root.item(i).attributes(1).value).value.length>root.item(i).attributes(5).value)
{
alert("项" + document.all.item(root.item(i).attributes(1).value).jsName + " 最大长度不能大于" +root.item(i).attributes(5).value);
return false;
}
}
}
//若项类型为日期
if(root.item(i).attributes(3).value.toUpperCase() == "D")
{
//若项必填,且项数大于1
if(root.item(i).attributes(2).value > 1 && root.item(i).attributes(4).value > 1)
{
for(k=1;k<=root.item(i).attributes(2).value;k++)
{
ck = ck || document.all.item(root.item(i).attributes(1).value + "_" + k).checked;
}
if(ck == false)
{
alert("你必须从" + k + "个选项中选择至少一项" + document.all.item(root.item(i).attributes(1).value + "_1").jsName);
return false;
}
}
//若项必填,且项数=1
if(root.item(i).attributes(4).value > 1 && root.item(i).attributes(2).value == 1)
{
if(document.all.item(root.item(i).attributes(1).value).value.lengthroot.item(i).attributes(5).value)
{
alert("项" + document.all.item(root.item(i).attributes(1).value).jsName + "必填 最小长度不能小于" + root.item(i).attributes(4).value + " 且最大长度不能大于" +root.item(i).attributes(5).value);
return false;
}
}
}
//若项类型为数字
if(root.item(i).attributes(3).value.toUpperCase() == "I")
{
//若项必填,且项数大于1
if(root.item(i).attributes(2).value > 1 && root.item(i).attributes(4).value > 0)
{
for(k=1;k<=root.item(i).attributes(2).value;k++)
{
ck = ck || document.all.item(root.item(i).attributes(1).value + "_" + k).checked;
tt = tt && re.test(document.all.item(root.item(i).attributes(1).value + "_" + k).value);
if(tt == false)
{
alert(document.all.item(root.item(i).attributes(1).value + "_1").jsName + "选项中第" + k + "项值只能为数值!");
return false;
}
}
if(ck == false)
{
alert("你必须从" + k + "个选项中选择至少一项" + document.all.item(root.item(i).attributes(1).value + "_1").jsName);
return false;
}
}
//若项必填,且项数=1
if(root.item(i).attributes(4).value > 0 && root.item(i).attributes(2).value == 1)
{
if(re.test(document.all.item(root.item(i).attributes(1).value).value) == false || document.all.item(root.item(i).attributes(1).value).value=="")
{
alert("项" + document.all.item(root.item(i).attributes(1).value).jsName + "只能为数值");
return false;
}
}
//若为非必填项
if(root.item(i).attributes(4).value == 0 && document.all.item(root.item(i).attributes(1).value).value.length !=0 && re.test(document.all.item(root.item(i).attributes(1).value).value) == false)
{
alert("项" + document.all.item(root.item(i).attributes(1).value).jsName + "可以不填,若要填定必须为数值!");
return false;
}
}
}
root = "";
xmlDoc = "";
return true;
}
接下来在表单页面中加载这个通用的JS代码
FormConfig.Xml
-----------------------------------------------
Xml文件说明
Form指定要检测的表单名
item index为自动编号 art0表单元素名. atr1同名表单项个数 atr2检测类型(现暂只支持数字,日期,备注,字符),atr3最小长度(0表示可以不填,对于日期型1表示后台程序自动处理,不检测,大于1表示强制用户输入) atr4最大长度
示例表单:
----------------------------------------------------------
-----------------------------------------------------------
比如上面的表单对应了xml中的fm2其中jsName指JS检测表单项不符要求后提示的名称.可自定义
通用Js代码:
----------------------------------------------------------------
function check(fm)
{
var submitIF=CheckItem(fm);
if(submitIF)
{
fmFill.submit();
}
}
function CheckItem(fm)
{
var xmlDoc = new ActiveXObject("Msxml2.DOMDocument");
xmlDoc.async= false;
xmlDoc.load("tstXml/config.xml");
var root = xmlDoc.selectNodes("//root/item[@fm=\'" + fm + "\'");
var re = /[0-9]$/;
var tt = true;
var ck = false;
for(i=0;i
//若项为字符型
if(root.item(i).attributes(3).value.toUpperCase() == "C")
{
//若项必填,且项数大于1
if(root.item(i).attributes(2).value >1 && root.item(i).attributes(4).value >0)
{
for(k=1;k<=root.item(i).attributes(2).value;k++)
{
ck = ck || document.all.item(root.item(i).attributes(1).value + "_" + k).checked;
}
if(ck == false)
{
alert("你必须从" + k + "个选项中选择至少一项" + document.all.item(root.item(i).attributes(1).value + "_1").jsName);
return false;
}
}
//若项必填,且项数=1
if(root.item(i).attributes(4).value > 0 && root.item(i).attributes(2).value == 1)
{
if(document.all.item(root.item(i).attributes(1).value).value.length
{
alert("项" + document.all.item(root.item(i).attributes(1).value).jsName + "必填 最小长度不能小于" + root.item(i).attributes(4).value + " 且最大长度不能大于" +root.item(i).attributes(5).value);
return false;
}
}
//若项为选填只需检测最大长度是否超过设定
if(root.item(i).attributes(4).value = 0)
{
if(document.all.item(root.item(i).attributes(1).value).value.length>root.item(i).attributes(5).value)
{
alert("项" + document.all.item(root.item(i).attributes(1).value).jsName + " 最大长度不能大于" +root.item(i).attributes(5).value);
return false;
}
}
}
//若项为备注型
if(root.item(i).attributes(3).value.toUpperCase() == "N")
{
//若项必填
if(root.item(i).attributes(4).value > 0 && root.item(i).attributes(2).value == 1)
{
if(document.all.item(root.item(i).attributes(1).value).value.length
{
alert("项" + document.all.item(root.item(i).attributes(1).value).jsName + "必填 最小长度不能小于" + root.item(i).attributes(4).value + " 且最大长度不能大于" +root.item(i).attributes(5).value);
return false;
}
}
//若项为选填只需检测最大长度是否超过设定
if(root.item(i).attributes(4).value = 0)
{
if(document.all.item(root.item(i).attributes(1).value).value.length>root.item(i).attributes(5).value)
{
alert("项" + document.all.item(root.item(i).attributes(1).value).jsName + " 最大长度不能大于" +root.item(i).attributes(5).value);
return false;
}
}
}
//若项类型为日期
if(root.item(i).attributes(3).value.toUpperCase() == "D")
{
//若项必填,且项数大于1
if(root.item(i).attributes(2).value > 1 && root.item(i).attributes(4).value > 1)
{
for(k=1;k<=root.item(i).attributes(2).value;k++)
{
ck = ck || document.all.item(root.item(i).attributes(1).value + "_" + k).checked;
}
if(ck == false)
{
alert("你必须从" + k + "个选项中选择至少一项" + document.all.item(root.item(i).attributes(1).value + "_1").jsName);
return false;
}
}
//若项必填,且项数=1
if(root.item(i).attributes(4).value > 1 && root.item(i).attributes(2).value == 1)
{
if(document.all.item(root.item(i).attributes(1).value).value.length
{
alert("项" + document.all.item(root.item(i).attributes(1).value).jsName + "必填 最小长度不能小于" + root.item(i).attributes(4).value + " 且最大长度不能大于" +root.item(i).attributes(5).value);
return false;
}
}
}
//若项类型为数字
if(root.item(i).attributes(3).value.toUpperCase() == "I")
{
//若项必填,且项数大于1
if(root.item(i).attributes(2).value > 1 && root.item(i).attributes(4).value > 0)
{
for(k=1;k<=root.item(i).attributes(2).value;k++)
{
ck = ck || document.all.item(root.item(i).attributes(1).value + "_" + k).checked;
tt = tt && re.test(document.all.item(root.item(i).attributes(1).value + "_" + k).value);
if(tt == false)
{
alert(document.all.item(root.item(i).attributes(1).value + "_1").jsName + "选项中第" + k + "项值只能为数值!");
return false;
}
}
if(ck == false)
{
alert("你必须从" + k + "个选项中选择至少一项" + document.all.item(root.item(i).attributes(1).value + "_1").jsName);
return false;
}
}
//若项必填,且项数=1
if(root.item(i).attributes(4).value > 0 && root.item(i).attributes(2).value == 1)
{
if(re.test(document.all.item(root.item(i).attributes(1).value).value) == false || document.all.item(root.item(i).attributes(1).value).value=="")
{
alert("项" + document.all.item(root.item(i).attributes(1).value).jsName + "只能为数值");
return false;
}
}
//若为非必填项
if(root.item(i).attributes(4).value == 0 && document.all.item(root.item(i).attributes(1).value).value.length !=0 && re.test(document.all.item(root.item(i).attributes(1).value).value) == false)
{
alert("项" + document.all.item(root.item(i).attributes(1).value).jsName + "可以不填,若要填定必须为数值!");
return false;
}
}
}
root = "";
xmlDoc = "";
return true;
}
[原创]Js+Xml打造通用表单验证
Js+Xml打造通用表单验证
javascript实现通用表单验证函数 - Sandy交流区 - CSDNBlog
javascript表单验证大全,
JS简单验证常用格式
jquery表单验证,jquery.validate全攻略
JS控制 Asp.net 验证控件的验证顺序
[Python]Web.py下表单的Ajax实时验证
关于《?jQuery?formValidator表单验证插件》之二
vfp含GRID通用表单的设置1
经典Javascript 表单验证正则表达式集合——小胡设计室
javascript表单
这就是星座,5000人亲身验证结果,男女通用。。 你是这样的吗?
json.js
JS 日历
什么是xml
采穗圃js
常用js
XML TEST
XML 入门
HTML表单样式大全
武汉市国家税务局表单下载
多表单提交
细说 Form (表单)