ASP 页面可重用的表单验证器






4.29/5 (7投票s)
一些用于客户端 HTML 表单验证的函数。永远不要再写它们!
这是关于什么
当使用 ASP 编写 Web 应用程序时,您经常需要为各种数据创建基于 HTML 的输入表单。例如,用户注册页面、问卷、数据捕获模板等等。大多数时候,这些数据会被进一步处理并存储在某个地方,通常是在数据库中。为了确保只输入有效数据,在将其存储在某个地方之前应进行一些检查。有效在这里意味着在当前上下文中是合理的(例如,没有未来的生日),并且适合数据存储,例如长度或数据类型的限制。
此验证可以通过 JavaScript 在客户端进行,也可以在接收 Active Server Page 中的服务器端进行。两者都有众所周知的优点和缺点。本文包含一种 JavaScript 变体的方法。
一遍又一遍地编写相同的代码
当我在过去几年编写各种 Web 应用程序时,我经常觉得我在一遍又一遍地做同样的事情,而且实际上或多或少是相同的。 在几次通过剪切和粘贴重用我的旧东西之后,我决定构建一个更通用的解决方案,可以在所有即将到来的项目中使用。任务目标
- 编写一次,随处使用
- 没有动态代码生成(生成客户端 JavaScript 的 ASP 脚本......)
- 将 JavaScript 代码与 HTML 分离(将其移动到单独的文件中)
- 浏览器独立
解决方案
由于我排除了动态代码生成,因此我不得不提出一个技巧,使验证代码独立于输入字段的名称,并提供仅检查某些字段的功能。 这是该解决方案的重点,因为可以从 JavaScript 中通过它们的名称或它们的索引访问输入字段。 两者都可能不同。<script language="JavaScript" src="/formvalidator.js"></script> <form name="RegisterUserForm" action="register.save.asp" method="post" OnSubmit="return CheckForm(document.RegisterUserForm);"> Logon Name: <INPUT TYPE="TEXT" NAME="logon_name" VALUE=""> <INPUT TYPE="HIDDEN" NAME="CHK_logon_name" VALUE="STR|5|255|True|Logon name"> </form>
那么我们在这里做什么呢? 前两行或多或少是直接的。 包括包含表单检查器代码的 JavaScript 文件,并包括一个 OnSubmit
事件处理程序。 有趣的部分是最后一个隐藏的输入字段。 它包含表单检查器的指令。 在这种情况下,它们是
- 要检查的字段的名称是 logon_name
- 它是一个字符串值
- 至少 5 个字符
- 最多 255 个字符
- 这是一个必填字段
- 友好的名称(对于错误消息)是 登录名
对于字符串来说,这与 HTML 可以直接为您做的事情相差不远。 基本上只有强制执行必填字段和最小字符串长度是增强功能。 当涉及到数值和日期时,它变得更加有趣。
根据字符串的特性,表单检查器会检查数值(整数和浮点数)的这些值
- 最小值和最大值(不是字符长度)
- 字符串的有效性。 只允许使用数字字符。
对于日期
- 字符串的有效性。 字符串格式
- 最小和最大日期
- 日期的有效性(例如,不允许 2 月 30 日)
那么 CheckForm
函数实际做的是,遍历作为参数传递的表单的所有表单元素。 它查找 CHK_ 前缀并将这些值解释为检查相应字段内容的指令。