65.9K
CodeProject 正在变化。 阅读更多。
Home

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

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.29/5 (7投票s)

2001年6月28日

CPOL

3分钟阅读

viewsIcon

163377

downloadIcon

1212

一些用于客户端 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_ 前缀并将这些值解释为检查相应字段内容的指令。

一些进一步的想法

该解决方案的优点在于,您不会用 JavaScript 内容进一步搞乱您的 ASP 代码。 但还有更多。 如果您自动生成所有输入字段,比如从描述您的数据存储设计的一些元数据中生成呢? 那么您的 ASP 页面只会创建所有必要的输入字段 - 并且因为它手头有数据类型信息 - 用于验证检查的隐藏字段。 那么您就可以免费获得适当的检查例程。
用于 ASP 页面的可重用表单验证器 - CodeProject - 代码之家
© . All rights reserved.