安大互联
财经热点 > Asp编程 > 用ASP动态生成JavaScript的表单验证代码
用ASP动态生成JavaScript的表单验证代码
浏览次数:【421】  发布日期:2009-8-13 12:09:22    文章分类:Asp编程   
专题:】 【
 
  表单的验证是开发WEB应用程序中常遇到的一关。有时候我们务必保证表单的某些项务必填写、务必为数字、务必是指定的位数等等,这时期就要用到表单验证了,一般我们经常使用的表单验证有2种方式:

1、编写JavaScript或VBScript的表单验证函数,在客户端进行验证;
2、在表单提交后,使用ASP的要领Request.Form获取表单的输入值进行判断,然后返回结果,这是在服务端进行验证;

  这2种方式都有其优缺点,好比第1种方式速度比较快,而且通常使用警告框的形式,用户能够很快的根据提示完成表单的填写,可是缺点就是用户的浏览器务必是支持JavaScript脚本的,再不然如果他关闭了JavaScript,那就!@#$%&^*(小田已经倒在地上了^_^);而第2种方式的兼容性比较好,可是缺点是速度比较慢(提交到服务端,在返回)而且使用也不方便。这次主要是用JavaScript的要领来验证,当然,如果同时用2种方式来验证是最保险了,不过(汗…………)要累死我们这些程序员了:)

  上面解释了表单验证的2中方式,下面就具体来讲讲动态生成JavaScript的概念。为啥要动态生成呢?因为这种客户端的验证代码是很烦琐的,如果每次都要自己编写真是累啊!用惯DW(Dreamweaver)或UD的朋友可能通常使用表单验证的插件,使用后生成的代码也木有艺术感,而且很多是用不到的(代码冗余)。小田要讲的是,生成完全符合表单情况的代码。

声明:小田对JavaScript其实不精通,这里只是想谈谈动态生成的要领,JS的高手完全可以自己改。

那么我们开始喽。

1、我们先来瞧瞧一段容易的JavaScript的验证代码
<formname="form1"><inputtype="text"name="name"></form>

这段代码是验证表单form1的name表单项,务必填写内容。这里就有几个重要的部分:表单域名称、表单项名称、判断语句;这些就是我们下面编写ASP函数的关键了。

2、如何生成JavaScript代码。最容易的,就是用Response.Write输出了,好比把上面代码输出就可以是



这里的vbCrlf是一个回车换行,&是连接符,&_是代码换行连接的字符。

3、这段代码的头和尾是基本固定不变的,变化的是中间的if判断部分,我们可以先把这部分写成函数,小田已经写好一个了,大伙可以参考一下,下面是代码
FunctionfindJS(frmName,errStr)
DimtmpArr
Dimi
'参数值
i=0
'获取错误列表,建立数组
tmpArr=Split(errStr,"|")
'输出查询条件
SelectCasetmpArr(i+1)
Case"0"'必填的Text类型
findJS="if((document."&frmName&"."&tmpArr(i)&".value)=="""")"&vbCrlf&_
"{"&vbCrlf&_
"window.alert('"&tmpArr(i+2)&"');"&vbCrlf&_
"document."&frmName&"."&tmpArr(i)&".select();"&vbCrlf&_
"document."&frmName&"."&tmpArr(i)&".focus();"&vbCrlf&_
"returnfalse;"&vbCrlf&_
"}"&vbCrlf
'"else"&vbCrlf&_
'"returntrue;"&vbCrlf
ExitFunction
Case"1"'必填的ListMenu类型
findJS="if((document."&frmName&"."&tmpArr(i)&".value)=="""")"&vbCrlf&_
"{"&vbCrlf&_
"window.alert('"&tmpArr(i+2)&"');"&vbCrlf&_
"document."&frmName&"."&tmpArr(i)&".focus();"&vbCrlf&_
"returnfalse;"&vbCrlf&_
"}"&vbCrlf
'"else"&vbCrlf&_
'"returntrue;"&vbCrlf
ExitFunction
Case"2"'务必为数字的Text类型
findJS="if(isNaN(document."&frmName&"."&tmpArr(i)&".value))"&vbCrlf&_
"{"&vbCrlf&_
"window.alert('"&tmpArr(i+2)&"');"&vbCrlf&_
"document."&frmName&"."&tmpArr(i)&".select();"&vbCrlf&_
"document."&frmName&"."&tmpArr(i)&".focus();"&vbCrlf&_
"returnfalse;"&vbCrlf&_
"}"&vbCrlf
'"else"&vbCrlf&_
'"returntrue;"&vbCrlf
ExitFunction
Case"3"'务必为指定位数的Text类型
findJS="if(document."&frmName&"."&tmpArr(i)&".value.length="&tmpArr(i+3)&")"&vbCrlf&_
"{"&vbCrlf&_
"window.alert('"&tmpArr(i+2)&"');"&vbCrlf&_
"document."&frmName&"."&tmpArr(i)&".select();"&vbCrlf&_
"document."&frmName&"."&tmpArr(i)&".focus();"&vbCrlf&_
"returnfalse;"&vbCrlf&_
"}"&vbCrlf
'"else"&vbCrlf&_
'"returntrue;"&vbCrlf
ExitFunction
Case"4"'务必大于指定位数的Text类型
findJS="if(document."&frmName&"."&tmpArr(i)&".value.length>"&tmpArr(i+3)&")"&vbCrlf&_
"{"&vbCrlf&_
"window.alert('"&tmpArr(i+2)&"');"&vbCrlf&_
"document."&frmName&"."&tmpArr(i)&".select();"&vbCrlf&_
"document."&frmName&"."&tmpArr(i)&".focus();"&vbCrlf&_
"returnfalse;"&vbCrlf&_
"}"&vbCrlf
'"else"&vbCrlf&_
'"returntrue;"&vbCrlf
ExitFunction
Case"5"'务必为Email的Text类型
findJS="if((!emailReg.test(document."&frmName&"."&tmpArr(i)&".value))&&(document."&frmName&"."&tmpArr(i)&".value!=''))"&vbCrlf&_
"{"&vbCrlf&_
"window.alert('"&tmpArr(i+2)&"');"&vbCrlf&_
"document."&frmName&"."&tmpArr(i)&".select();"&vbCrlf&_
"document."&frmName&"."&tmpArr(i)&".focus();"&vbCrlf&_

手机扫码浏览该文章
 ● 相关资讯专题
  • 网络建设业务咨询

   TEl:13626712526