ASP+JAVAScript:复杂表单的动态生成与验证
发布时间:2007-10-06 21:51:00
这里所谓的复杂表单,是指表单中包含多种不同的输入类型,比如下拉列表框、单行文本、多行文本、数值等。在经常需要更换这类表单的场合,需要有一个表单的动态生成程序。本文介绍的正是这样一个系统,它以数据库保存表单定义数据,利用ASP脚本动态生成表单HTML代码以及验证表单输入的脚本。
一、定义数据库表结构
在Web上经常可以看到“每周调查”之类的表单,这就是一种需要经常更新的表单。如果有一个动态生成表单及其验证脚本的程序,可以大大减少制作这些表单的工作量。
在本文的动态表单生成与验证示例中,我们使用一个Access数据库来存储有关表单的定义信息,同时为简单计,用户在表单中输入的数据也保存到同一数据库。定义表单需要两个表:第一个表(Definitons)用于表单输入域的定义,第二个表(Lists)保存各个输入域的附加信息,比如选择列表的选择项。
表Definitons包含如下字段:
FieldName —— 赋予表单输入域的变量名字
Label —— 即文本标签,显示在输入域前面的提示性文字
Type —— 单个字符,该字符表示表单输入域的形式和输入值的类型
具体如下:
(t) 文本输入框,即< INPUT TYPE="TEXT" >。
(n) 文本输入框,但要求输入数字值。
(m) 备注型内容,用于注释或其他大量文本的输入,它是一个多行文本编辑框。
(b) 要求输入“是”或“否”。本实现中将用复选框来获取这种输入,复选框的文本标签为“是”。如果用户选中它,则返回值是“on”。
(r) 单选按钮。
(l) 下拉列表框。
Min —— 仅对数字型输入值有效,在这里给出最小值。在本例中有一个“Age”(年龄)数字型输入框,它的最小值设定为1。
Max —— 该字段的值与输入域形式有关。对于数字型输入框,它表示的是允许的最大值。例如“Age”的Max值为100。对于文本输入框,Max表示允许的最多字符个数。对于多行文本编辑框,Max表示可见区域的文本行数。
Required —— 表示是否必须输入。这种类型的值如果没有输入,则输入验证程序将报告错误。在表单中,必须输入的值以星号标记,并以脚注的形式提示用户该类值必须输入。
本文的示例表单是一个ASP程序员调查表,在Definitons表中该表单的定义主要如下:
FieldName Label Type Min Max Required
Name 姓名 文本(t) - 50 否
Age 年龄 数字(n) 1 100 否
Sex 性别 单选按钮(r) - - 是
E-mail 邮件地址 文本(t) - - 是
Language 编程语言 下拉列表框(l) - - 否
表Lists用于保存输入域定义的一些附加信息,本例有“Sex”和“Languages”两个输入值要用到它。表Lists非常简单,只包含如下三个字段:
FieldName —— 当前记录属于哪个表单输入域
Value —— 选择项的值
Label —— 用户所看到的选择项的提示文本
输入域“Sex”只能从两个值选取:“男”或“女”。“Language”列出了几种可应用于ASP环境的编程语言,包括:VBScript,JavaScript,C,Perl和“其他”。
第三个表“Records”保存用户提交的内容,它也包含三个字段,每个记录对应用户的一次提交:
Record —— 备注类型,以查询字符串形式保存的用户输入。
Created —— 用户提交该表单的日期和时间。 RemoteIP —— 表单提交者的IP地址。
在实际应用中可能要收集更多有关用户的信息,为简单计,本例只记录提交时间和用户IP地址这两个附加信息。
猜你喜欢
- 一、概念 1. 数据库 (Database)什么是数据库?数据库是依照某种数据模型组织起来并存放二级存储器中的数据集合。这种数据集合具有如下
- 最近一直忙,我们的注册页面还是在持续优化。今天抽时间分析了下数据,依然以主注册表单为例,对表单里3个区块、9个字段做了个小小出错排行;看看哪
- 有些使用Z-Blog的用户询问我,怎么实现我的月光博客首页上这种自动图文混排的版式效果,今天我就详细介绍一下在Z-Blog中实现这种图文混排
- 代码如下:'个人代码风格注释(变量名中第一个小写字母表表示变量类型) 'i:为Integer型; 's:为Strin
- 很多人都将<数据库设计范式>作为数据库表结构设计“圣经”,认为只要按照这个范式需求设计,就能让设计出来的表结构足够优化,既能保证
- 一个SELECT查询中的LIKE语句来执行这种查询,尽管这种方法可行,但对于全文查找而言,这是一种效率极端低下的方法,尤其在处理大量数据的时
- 一个很棒的 blog 文章,是 PPK 两年前写的,文章中解释了 contains() 和 compareDocumentPosition(
- 今天好不容易闲下来半天,所以和大家分享一下我之前总结的一套Web UI 设计命名规范,也就是网站用户界面设计(俗称网页设计)命名规范。这套规
- 如果您的网站面向世界各地的冲浪者或者对外开展商贸活动,检测来访者的浏览器语言类型就非常现实了。这里提供的脚本可以检测流露;浏览器
- 以下保存成 App.xml , 与asp文件放在相同目录下! 代码如下: <?xml version="1.0"
- CSS中最常用的布局类属性,一个是Float(CSS浮动属性Float详解),另一个就是CSS定位属性Position。1. positio
- #region 读写xml文件的2个小函数,2005 4 2 by hyc public void 
- 这个间歇性向上滚动js代码很适合做广告展示,友情链接等等。与平常的无缝向上连续滚动不同的是它每滚动一个就会停顿一会儿。<!DOCTYP
- 社会上的任何人,都不愿意自己给人留下难以交往的印象,就算是那些冷漠、寡情的人他们也在不断地寻求一种通道,达到与他人的交流和沟通。如果,在你与
- 这个效果前些日子有人在论坛问起,今天有空研究了下。我打了原创标记,因为我在写这个方法时的确没有参考过别人的代码。我的方法其实就是层遮罩加AL
- 函数getcache,会自动建立需要的缓存。 代码如下:Function getcache(funsname,isreset,is
- 一:最近,经常碰到有网友问,如何使vbscript和javascipt传递变量。不知道为什么要这么做。因为每一种脚本语言几乎都可以完成所需要
- 用比较笨的方法来做abc ="AlkjA;lkjlkjAlkAkjAlkjAAAA" if instr(abc,&quo
- 这里使用FSO对象来删除指定文件夹 代码和说明如下:<% set fs=createobject(&qu
- 有一次去超市换货,本能的找到服务中心,服务中心说这个业务在超市旁边一个房间里,由于忘记带小票,那个小房间的人让我去另外一个小房间调电脑里的记