您的位置:首页精文荟萃软件资讯 → 如何实现动态添加Html文档中Form项

如何实现动态添加Html文档中Form项

时间:2004/10/7 19:04:00来源:本站整理作者:蓝点我要评论(0)


            
             
              
             
            

               
               

            



            大家好,今天和大家谈谈如何用ASP来实现动态的添加Html文档中Form项的问题。如果你对Html比较熟悉的话肯定知道有个
的HTML标记。在
之间有诸如类型(type)为Text、Password、Button、Submit、Reset等的标记(元素)。我们这里所说的动态的添加Form项就是指动态的添加
中的Text元素。那么如何去实现动态的添加Form项呢?

   我们先分析分析实现动态添加form项的思路。

  如果是让您自己或用诸如FrontPage、DreamWeaver静态编写Html文档来增加一个又一个类型为text的form元素的话。您肯定是写完第一个类型为text的form元素后,再会加入第二个类型为text的form元素,就这样一直加到满足数目条件为止。我们先不说在加一个新的类型为text的元素时,应该将已经存在且有内容、类型也为text的其他form元素也显示出来。上面所说的通过静态编写Html文档来增加类型为text的form元素的方法,其实就是我们在ASP程序文件中实现动态添加类型为text的form元素的基本思路。如何去得到已经存在且有内容、类型也为text的其他form元素的内容呢?在ASP程序中通过request.form("TextFieldName")可以得到。其中的"TextFieldName"是指
中名字为"TextFieldName"的项。就是指
"TextFieldName">
中的"TextFieldName"。

  现在我们知道如何得到了表单的内容了,那么我们就可以通过这种方法来得到已经存在且有内容、类型为text的form元素的值了。再在显示这些已经有值的text项时,我们就可以把所得到的值赋给相应的项。接下来,我们又会想如何去知道一共有多少个有内容、类型为text的form项呢?我们可以通过以下这种方法来得到。那就是通过request.form("TextFieldName")的Count属性来得到。这是因为在得到表单中多个类型为Text并且同名的form元素时,我们能得到的是一组值,也就说它们的值是放在一个名为TextFieldName的集合之中。而此时的count属性就是统计这个集合中同类元素的数目的,这样我们就可以知道一共有多少个这样的类型为text的form元素了,并且可以用循环语句与count属性取出集合各自的值。您可能会问:那么我们又如何才能得到这个集合中每一个名为TextFieldName类型为text的form的元素的值呢?在此之前我们先定义一个变量I,它的初始值为1,其实这个变量I就是我们在做循环时的变量。接下来我们就可以通过request.form("TextFieldName")(I)的方法来获取每一个名为TextFieldName的类型为text的form元素的值了。还有一点要注意,就是我们在将已经有值、类型也为text的form元素的值取出赋给相应项并显示出来的时候,我们还应该再增加一个新的类型为text的form项。为什么呢?这是为了让我们还可以再接着继续添加新的值。不然的话,在取出所有已经有值的类型为text的form元素后,您就没有继续添加新值的地方了,那也就成不了动态添加Html文档中Form项了。所以呢,您一定不能忘记这很重要的一点。现在我们知道如何取得这些满足条件的类型为text的form的元素数目了,也知道如何分别获取它们各自的值了。那么我又如何去控制只仅仅将已经有值、类型为text的form的元素呢?以及我们倒底如何去实现上面所说的一切呢?那么接下来我会给出它的源代码,并且会在有些地方加上注释或给出解释。
'/*DynamicAddForm.asp文件的源代码开始点*/
<%@ Language=VBScript %>
<%
'----------------------------------------------
'Author : WaiWai(歪歪)
'Created Date : 2000-2-20
'File Name : DynamicAddForm.ASP
'Description : Dynamic Add Form's Text Fields.
'All Rights Reserved.所有权归City Club.
'----------------------------------------------
%>



Dynamic Add Form Text Elements.





<%
if trim(Request.Form("List")) = "显示已有项" then
'/*其中的trim()函数是去掉Request.Form("List")两边的空格*/

'/*当您点击了名为"显示已有项"的按钮时,我们将会看到所有已经有值的类型为text的form项*/
Response.Write ""
for I = 1 to Request.Form("items").Count '/*已经存在的Text类型的数目*/
Response.Write ""
next
if trim(Request.Form("newItem"))<>"" then
Response.Write ""
end if
else '/*此时表明用户是点击了名为"添加"按钮,要进行添加操作*/
Response.Write ""
for I = 1 to Request.Form("items").Count
'/*此时的操作是循环显示出已经存在且产有值的类型为text的form元素*/
'/*Request.Form("items").Count为已经存在的Text类型的数目*/
'/*我们可以在此处加入对所添加内容的条件判断。如判断所添加内容的长度是否小于3等.*/
Response.Write ""
'/*此步是将所得到某一有值的类型为text的form元素的值显示出来*/
next
if trim(Request.Form("newItem")) <> "" then
'/*此步的目的是检查是否用户在添加新的类型为text的form元素处有没有添加新值,*/
'/*有则将此值赋给name=items的类型为text的form元素,并显示出来。*/
Response.Write ""
Response.Write ""
'/*此处是添加一个名为newItem类型为text的form元素,让用户可以继续进行添加操作。*/
else
'/*此时表明用户在添加新的类型为text的form元素处并没有添加新的值,所以就只能列出*/
'/*一个名为newItem类型为text的form元素,让用户可以继续进行添加操作。*/
Response.Write ""
end if
%>

<%
end if
%>
已经存的元素内容是:" & "
" & Request.Form("items")(I) & "
" & trim(Request.Form("newItem")) Response.write "
'/*点击了按钮后就会返回上一页,也就是添加类型为text的Form项所在的页*/
Response.write "
Response.Write ">








'/*DynamicAddForm.asp文件的源代码结束点*/

  您在看了这些源代码后,可能会注意到有两个类型都为text的form项元素:一个名字为items、一个名字为newItem。为什么呢?这是因为我们要区别哪些是用户通过点击<添加>按钮、并且输入了新值后得到的,哪些是我们为了让用户能够有地方可以输入新值的类型为text的form项元素。这样我们就能很清楚的在循环时只列出用户已经添加的、有值的类型为text的form项元素了。这就是我们为什么把它们命名成不同的名字的缘故,是不是很妙呢?呵呵 :-)。其实这种方法的关键在于利用了request.form("TextFieldName")的Count属性和request.form("TextFieldName")(I)的方法,才使得我们更容易的获取名为TextFieldName的类型为text的form项元素的数目和分别获取它们的值。这两种方法的用处很大,可以大大的简化我们所要编写的代码。大家一定要记住了这两种用法。下面我再给出一个没有用到这两种用法的ASP程序源代码,大家比较比较,体会一下为什么上面的代码要好。

'/*DynamicAddForm2.asp文件的源代码开始点*/
<%@ Language=VBScript %>
<%
'----------------------------------------------------
'Author : WaiWai(歪歪)
'Created Date : 2000/1/13
'File Name : DynamicAddForm.ASP
'Description : Dynamic Add Form's Text Fields.
'All Rights Reserved.所有权归City Club
'----------------------------------------------------
%>





Add new mail server site. All Rights Reserved.













<%
if trim(Request.form("num"))="" then
'/*此时表示用户首次打开此ASP页,所以所得的num为空,并显示出相应的输入界面供用户输入信息
'其中的num值是为来记录类型为text的form元素的数目,与第一个代码文件中的 'request.form("items").Count效果一样.*/
'/*First time open this page.*/
Response.Write ""
Response.Write ""
Response.Write ""
Response.Write "" & vbcrlf
Response.Write ""
Response.Write ""
else
'/*Add new*/
'Response.Write ""
'/*Loop Start*/
Response.Write "



追加新邮件服务器信息


条数 邮件服务器URL 用户名参数变量 密码参数变量 站点名称

[ * * * Example: * * * ]

0.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;990.net/prog/login?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;user
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
pass&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;990.net

1."
Response.Write "&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
" & trim(Request.Form("num")) & "."
for I = 1 to cint(trim(Request.Form("num")))+1
%>
<%=I%>.
<%if I<10 then
'/*此处的目的是为了保证前10个元素与后89个元素缩进相同的宽度*/%>
&nbsp;&nbsp;
<%elseif I<100 and I>9 then%>
&nbsp;
<%end if%>
<%if I<>cint(trim(Request.Form("num")))+1 then
url="url" & I '/*生成如url1,url2......的字符串*/
user_var = "user_var" & I
pw_var = "pw_var" & I
sitename = "sitename" & I
if trim(request.form(url))<>"" and trim(Request.Form(user_var))<>"" and_ trim(Request.Form(pw_var))<>"" and trim(Request.Form(sitename))<>"" then %>
&nbsp;&nbsp;&nbsp; value=<%=trim(request.form(url))%>>&nbsp;&nbsp;&nbsp;
value=<%=trim(Request.Form(user_var))%>>&nbsp;
&nbsp;&nbsp;&nbsp; value=<%=trim(Request.Form(pw_var))%>>
&nbsp;&nbsp;&nbsp; value=<%=trim(Request.Form(sitename))%>>


<% else
%>

<% exit for
end if
else%>
&nbsp;&nbsp;&nbsp;>
&nbsp;&nbsp;&nbsp;&nbsp;
>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
>&nbsp;&nbsp;&nbsp;
>


<%end if
next
'/*Loop End*/
end if
%>

onclick="{document['form1'].action='DynamicAddForm.ASP';
document.form1.submit();}">&nbsp;&nbsp;&nbsp;
onclick="document['form1'].action='SaveNew.asp';
document.form1.submit();">
&nbsp;&nbsp;&nbsp;
onClick="window.location='PostOfficeConsole.asp'">

<%if trim(Request.Form("num"))<>"" then
'/*当开始给第一个类型为text的form元素添加了值的时候开始记录text类型元素的数目*/%>
>
<%end if%>



'/*DynamicAddForm2.asp文件的源代码结束点*/

  现在大家都看到了这两种方法各自实现的程序源代码了。您有什么想法呢?呵呵,是不是觉得第一个程序代码要比第二个程序代码简洁的多呢。我们在第一个程序代码中是在得到同名类型为text的form元素的值时用到了request.form("TextFieldName")的Count属性来统计到目前为止一共有多少个这样的form元素。而在第二个程序代码中,我们是通过
中类型为hidden的元素来保存和得到这个数的。还有一点值得再提一次,那就是把这些类型为text的form元素的名字都命名成同一名字。这就可以避免在第二个程序代码中诸如“url="url" & I”的部分了。当然了,这个做法在是知道request.form("TextFieldName")有Count这个属性的前提下才会想到的了。所以第一个程序代码的优点在于它充分利用了在获取同名同类型的form元素的值时的Count属性和值的取法。呵呵,解决问题的好思路与方法是基于对所用工具有着充分了解的基础之上的。。所有这些的关键是我们要不断的去做,这样我们才能更好的领悟和了解,学习到、有着更好更妙的方法。

相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么

文章评论
发表评论

热门文章 360快剪辑怎么使用 36金山词霸如何屏幕取词百度收购PPS已敲定!3

最新文章 微信3.6.0测试版更新了微信支付漏洞会造成哪 360快剪辑怎么使用 360快剪辑软件使用方法介酷骑单车是什么 酷骑单车有什么用Apple pay与支付宝有什么区别 Apple pay与贝贝特卖是正品吗 贝贝特卖网可靠吗

人气排行 xp系统停止服务怎么办?xp系统升级win7系统方电脑闹钟怎么设置 win7电脑闹钟怎么设置office2013安装教程图解:手把手教你安装与qq影音闪退怎么办 QQ影音闪退解决方法VeryCD镜像网站逐个数,电驴资料库全集同步推是什么?同步推使用方法介绍QQ2012什么时候出 最新版下载EDiary——一款好用的电子日记本