'/*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.'----------------------------------------------%><HTML><head><Meta name="GENERATOR" Content="Microsoft Visual Studio 6.0"><Title>Dynamic Add Form Text Elements.</Title><style type="text/CSS"><!--td { Font-size: 9pt}body { Font-size: 9pt}select { Font-size: 9pt}A {text-decoration: none; color: #003366; Font-size: 9pt}A:hover {text-decoration: underline; color: #FF0000; Font-size: 9pt}--></style></head><BODY><table border="1" cellspacing="0" height=400 wIDth=98% bordercolorlight="#5E5E00" bordercolordark="#FFFFEC" bgcolor=lightGrey align=center valign=top> <%if trim(Request.Form("List")) = "显示已有项" then '/*其中的trim()函数是去掉Request.Form("List")两边的空格*/ '/*当您点击了名为"显示已有项"的按钮时,我们将会看到所有已经有值的类型为text的form项*/Response.Write "<td><form><center>已经存的元素内容是:" & "</td><tr>" for I = 1 to Request.Form("items").Count '/*已经存在的Text类型的数目*/Response.Write "<td align=center>" & Request.Form("items")(I) & "</td><tr>"nextif trim(Request.Form("newItem"))<>"" thenResponse.Write "<td align=center>" & trim(Request.Form("newItem")) Response.write "<input type=button name='Back' value='Back' Response.write "style='Font-size:12pt' onClick='window.history.back()'>'/*点击了<Back>按钮后就会返回上一页,也就是添加类型为text的Form项所在的页*/Response.write "</form></td><tr>"end ifelse '/*此时表明用户是点击了名为"添加"按钮,要进行添加 *** 作*/Response.Write "<td align=center><form action=DynamicAddForm.asp method=post></td>"for I = 1 to Request.Form("items").Count '/*此时的 *** 作是循环显示出已经存在且产有值的类型为text的form元素*/'/*Request.Form("items").Count为已经存在的Text类型的数目*/'/*我们可以在此处加入对所添加内容的条件判断。如判断所添加内容的长度是否小于3等.*/Response.Write "<td align=center><input type=text name=items value='"Response.write Request.Form("items")(I) & "'></td><tr>"'/*此步是将所得到某一有值的类型为text的form元素的值显示出来*/nextif trim(Request.Form("newItem")) <> "" then'/*此步的目的是检查是否用户在添加新的类型为text的form元素处有没有添加新值,*/'/*有则将此值赋给name=items的类型为text的form元素,并显示出来。*/Response.Write "<td align=center><input type=text name=items value='"Response.Write trim(Request.Form("newItem")) & "'"Response.Write "><br></td><tr>"Response.Write "<td align=center><input type=text name=newItem" Response.write "value=''></td><tr>"'/*此处是添加一个名为newItem类型为text的form元素,让用户可以继续进行添加 *** 作。*/else '/*此时表明用户在添加新的类型为text的form元素处并没有添加新的值,所以就只能列出*/'/*一个名为newItem类型为text的form元素,让用户可以继续进行添加 *** 作。*/Response.Write "<td align=center><input type=text name=newItem value=''></td>"end if%><tr><td align=center><br><input type=submit name="List" value="显示已有项" style="Font-size:12pt"><input type=submit name="Add" value="添加" style="Font-size:12pt"> </form></td><%end if%></table></BODY></HTML>'/*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'----------------------------------------------------%><HTML><head><Meta name="GENERATOR" Content="Microsoft Visual Studio 6.0"></head><style type="text/CSS"><!--td { Font-size: 9pt}body { Font-size: 9pt}select { Font-size: 9pt}A {text-decoration: none; color: #003366; Font-size: 9pt}A:hover {text-decoration: underline; color: #FF0000; Font-size: 9pt}--></style><Title>Add new mail server site. All Rights Reserved.</Title><script language=JavaScript>function mycheck(tt) {alert("afd")return false}</script><BODY topmargin=12><form name=form1 method=post><table border="1" cellspacing="0" height=400 wIDth=98% bordercolorlight="#5E5E00" bordercolordark="#FFFFEC" bgcolor=lightGrey align=center valign=top><td align=center colspan=5 valign=top height=30><h4>追加新邮件服务器信息</h4></td><tr><td align=center valign=top height=10><Font style="Font-size:11pt">条数</Font></td><td align=center valign=top height=10 wIDth=43%><Font style="Font-size:11pt">邮件服务器URL</Font></td><td align=center valign=top height=20 wIDth=17%><Font style="Font-size:11pt">用户名参数变量</Font></td><td align=center valign=top height=20 wIDth=17%><Font style="Font-size:11pt">密码参数变量</Font></td><td align=center valign=top height=20 wIDth=17%><Font style="Font-size:11pt">站点名称</Font></td><tr><td colspan=5 valign=top height=30><Font color=blue>[ * * * Example: * * * ]<br>0. 990.net/prog/login? user pass 990.net</Font></td><tr><%if trim(Request.form("num"))="" then '/*此时表示用户首次打开此ASP页,所以所得的num为空,并显示出相应的输入界面供用户输入信息'其中的num值是为来记录类型为text的form元素的数目,与第一个代码文件中的 'request.form("items").Count效果一样.*/'/*First time open this page.*/Response.Write "<td align=center valign=top>1.</td>"Response.Write "<input type=hIDden name=num value=1>"Response.Write "<td align=center valign=top >"Response.Write " <input type=text size=40 name=url1></td>"Response.Write "<td align=center valign=top > <input type=text size=12 ID=text1 name=user_var1></td>" & vbcrlfResponse.Write "<td align=center valign=top > <input type=text size=12 ID=text2 name=pw_var1></td>"Response.Write "<td align=center valign=top > <input type=text size=12 ID=text2 name=sitename1></td><tr>"else'/*Add new*/'Response.Write "<td align=center valign=top>" & trim(Request.Form("num")) & ".</td>"'/*Loop Start*/Response.Write "<td colspan=5 valign=top>"for I = 1 to cint(trim(Request.Form("num")))+1%><%=I%>.<%if I<10 then '/*此处的目的是为了保证前10个元素与后89个元素缩进相同的宽度*/%> <%elseif I<100 and I>9 then%> <%end if%><%if I<>cint(trim(Request.Form("num")))+1 thenurl="url" & I '/*生成如url1,url2......的字符串*/user_var = "user_var" & ipw_var = "pw_var" & Isitename = "sitename" & Iif trim(request.form(url))<>"" and trim(Request.Form(user_var))<>"" and_ trim(Request.Form(pw_var))<>"" and trim(Request.Form(sitename))<>"" then %> <input type=text size=40 name=<%=url%> value=<%=trim(request.form(url))%>> <input type=text size=12 ID=text1 name=<%=user_var%> value=<%=trim(Request.Form(user_var))%>> <input type=text size=12 ID=text2 name=<%=pw_var%> value=<%=trim(Request.Form(pw_var))%>> <input type=text size=12 ID=text2 name=<%=sitename%> value=<%=trim(Request.Form(sitename))%>><br><% else%><script>alert("邮件服务器URL、用户名参数变量、密码参数变量、站点名称中有空值!")window.history.back()</script><% exit forend ifelse%> <input type=text size=40 name=url<%=I%>> <input type=text size=12 ID=text1 name=user_var<%=I%>> <input type=text size=12 ID=text2 name=pw_var<%=I%>> <input type=text size=12 ID=text2 name=sitename<%=I%>><br> <%end ifnext'/*Loop End*/end if%></td><tr><td colspan=5 align=center height=20><input type=button value="追加" style="Font-size:11pt"onclick="{document['form1'].action='DynamicAddForm.ASP';document.form1.submit();}"> <input type=button value="保存" style="Font-size:11pt"onclick="document['form1'].action='SaveNew.asp';document.form1.submit();"> <input type=button value="返回控制台" style="Font-size:11pt"onClick="window.location='PostOfficeConsole.asp'"></td></table><%if trim(Request.Form("num"))<>"" then '/*当开始给第一个类型为text的form元素添加了值的时候开始记录text类型元素的数目*/%><input type=hIDden name=num value=<%=cint(trim(Request.Form("num")))+1%>><%end if%></form></BODY></HTML>'/*DynamicAddForm2.asp文件的源代码结束点*/ |
现在大家都看到了这两种方法各自实现的程序源代码了。您有什么想法呢?呵呵,是不是觉得第一个程序代码要比第二个程序代码简洁的多呢。我们在第一个程序代码中是在得到同名类型为text的form元素的值时用到了request.form("TextFIEldname")的Count属性来统计到目前为止一共有多少个这样的form元素。而在第二个程序代码中,我们是通过<form></form>中类型为hIDden的元素来保存和得到这个数的。还有一点值得再提一次,那就是把这些类型为text的form元素的名字都命名成同一名字。这就可以避免在第二个程序代码中诸如“url="url" & I”的部分了。当然了,这个做法在是知道request.form("TextFIEldname")有Count这个属性的前提下才会想到的了。所以第一个程序代码的优点在于它充分利用了在获取同名同类型的form元素的值时的Count属性和值的取法。呵呵,解决问题的好思路与方法是基于对所用工具有着充分了解的基础之上的。。所有这些的关键是我们要不断的去做,这样我们才能更好的领悟和了解,学习到、有着更好更妙的方法。 总结
以上是内存溢出为你收集整理的如何实现动态添加Html文档中Form项全部内容,希望文章能够帮你解决如何实现动态添加Html文档中Form项所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)