西部数码
会员登陆
登录加载中...
超级搜索
栏  目  
类  别  
关键词  
 站内搜索   网络搜索
  
 当前位置:文章首页>>网页编程>>ASP实例>>ASP+JS处理复杂表单的生成与验证
推荐给你的朋友阅读:

ASP+JS处理复杂表单的生成与验证

来源:天极网 发表日期: 2007-01-09 10:41:08

三、动态生成表单

  生成表单时,程序按照Definitons表中的各个输入域定义记录,依次生成相应的表单HTML代码和JavaScript代码。HTML代码中首先要生成的是文本标签:

以下是引用片段:
  sHTML=sHTML&vbTab&"<TR>"&vbCrLf&vbTab&vbTab
  sHTML=sHTML&"<TDVALIGN="&Chr(34)&"TOP"&Chr(34)
  sHTML=sHTML&">"&vbCrLf&vbTab&vbTab&vbTab
  sHTML=sHTML&"<B>"&RS.Fields("Label")

  然后程序检查当前输入域是否必须输入。如果必须,则在标签文本之后加一个星号(表示该值必须输入),同时对于必须输入的值,还要生成相应的JavaScript代码来验证它。对于单选按钮或选择列表,需进一步检查用户确实选择了某个选项;对于所有其他输入类型,只要检查输入值不为空即可。

  紧接文本标签的是表单的输入元素,这些元素的HTML代码根据Definitions表中指定的类型和属性生成。再接下来就是根据输入值要求生成执行客户端验证任务的JavaScript代码。对于本例,只有数字型的值需要进一步检查以保证用户的输入确实是数字,而且数字值在许可的最大值和最小值之间。生成上述代码之后,就可以结束一个表格行(也就是一个输入域)继续处理Definitions表的下一个记录。一旦所有的数据库记录处理完毕,下一步就可以加入“提交”按钮和“清除”按钮的HTML代码。如果换个角度来看,程序在这里的任务就是根据数据库记录生成各个输入域,每个输入域占用一个表格行,每个表格行二个单元:第一个单元用来显示文本标签,第二个单元显示输入元素本身(代码见dForm.asp)。

  上述过程结束之后,表单的HTML代码和验证用JavaScript函数分别保存到了变量sHTML和sJavaScript中。在把这些内容写入页面之前,程序检查客户端是否要求执行JavaScript验证,如果不要求执行这类验证,则清除sJavaScript变量:

  If iValType = 0 Or iValType = 2 Then sJavaScript = ""

  在输出BODY标记之后,程序输出如下JavaScript函数:

以下是引用片段:
  <SCRIPTLANGUAGE="JavaScript">
 <!--
 functionvalidate(TheForm){
 //客户端表单验证
 <%=sJavaScript%>
 returntrue;
 }
 
 functionCheckRadio(objRadio){
 //单选按钮中是否有某个值被选中
 for(varn=0;n<objRadio.length;n++){
 if(objRadio[n].checked){
 returntrue;
 }
 }
 returnfalse;
 }
 
 functionCheckList(objList){
 //是否已经在选择列表中选择了某个值
 for(varn=1;n<objList.length;n++){
 if(objList.options[n].selected){
 returntrue;
 }
 }
 returnfalse;
 }
 //-->
 </Script>

  如果客户端不需要JavaScript验证,则validate函数只剩下一个“return true”语句。上面代码中的后面两个静态JavaScript函数(CheckRadio和CheckList)用于验证单选按钮和下拉列表框,当这两种输入域需要验证时validate函数将调用它们。

  现在可以开始把表单写入页面:

  < FORM ACTION="./dform.asp" METHOD="POST" NAME="MyForm" onSubmit="return validate(this)" >

  在这里,只有当validate函数返回true时才执行表单提交操作。因此当客户端JavaScript验证功能关闭时,validate函数将自动返回true。

  接下来要加入的是名为val的隐藏域。如前所述,该值指示表单的验证模式。

  < INPUT TYPE="HIDDEN" NAME="val" VALUE="< %=iValType% >" >

  当用户提交表单时,处理脚本将根据该值确定是否执行服务器端验证。

  然后输出的是表格标记以及表格标题。标题保存在变量sTitleLabel中,该值在脚本开始执行时初始化:

以下是引用片段:
 <TABLEBORDER="0">
 <TR>
 <TDCOLSPAN="2"ALIGN="CENTER">
 <H2><%=sTitleLable%></H2>
 </TD>
 </TR>

  作为改进措施,可以在表Definitions、Lists和Records中增加一个字段FormID。FormID唯一标识一个表单,这样程序就可以同时地定义多个表单、保存多个表单的用户应答结果。至于上面的sTitleLabel,我们可以用另外一个表(比如Forms)来保存。

  紧接着表格标记和表格标题,程序输出的是HTML表单以及“提交”、“清除”按钮的代码。在此之后,程序检查sHTML字符串中是否包含“*”,如包含的话说明表单中存在必须输入的内容,此时就输出一个脚注以说明该星号的含义。

以下是引用片段:
 <%=sHTML%>
 <TR>
 <TDCOLSPAN="2"ALIGN="CENTER">
 <INPUTTYPE="SUBMIT"VALUE="提交表单"><INPUTTYPE="reset"VALUE="清除">
 </TD>
 <%
 '是否存在必需输入的表单域,如存在,则输出表单脚注解释'*'的含义
 IfInStr(sHTML,"*")Then
 %>
 </TR>
 <TDCOLSPAN="2"ALIGN="CENTER">
 <FONTSIZE="2">注意:有星号标记的值必需输入。</FONT>
 </TD>
 </TR>
 <%
 EndIf
 %>
 </TABLE>
 </FORM>

  至此为止,表单的生成任务已经完成。

专业制作ASP网站

上一页 1 2 3 4 下一页

0
0
[作者:匿名 关键词:表单 录入:raincity 责编:raincity 阅读次数:11880]

相关文章 相关新闻 相关软件 相关教程 公共评论 发表评论

  • ·暂无相关内容
  • ·暂无相关内容
  • ·暂无相关内容
    评论载入中...
    您的称呼  验 证 码   
    您的评论 [ 最多字数:  已用字数:剩余字数:]

     
COPYRIGHT 2003-2020 创意飞腾工作室(The Feitec Studio.) ALL RIGHTS RESERVED .
官方咨询:FeitecCMS5366464
页面加载时间:405.76ms Powered By:FeitecCMS V4.0(Build1101)
[蜀ICP备05000881]