在许多情况下,可能不希望每次向ComboBox添加内容时都提交表单。本文将介绍如何使用客户端脚本向ComboBox添加元素,并解释如何获取当前ASP文件的父文件夹路径。这对于生成数据库访问的连接字符串非常有用。
可以通过创建一个"OPTION"元素的实例,为其分配值,然后将其添加到ComboBox中。文档对象的CreateElement方法可以创建一个"OPTION"标签的元素实例。
以下是使用VBScript向ComboBox添加元素的示例代码:
Dim a
a = 1
Sub Button1_OnClick
If Text1.value <> "" Then
Set objOpt = document.CreateElement("OPTION")
objOpt.Value = a
objOpt.Text = Text1.value
Select1.add objOpt
Set objOpt = Nothing
Select1.selectedIndex = a
a = a + 1
End If
End Sub
变量a用于跟踪ComboBox中的项目数量。添加新元素后,将新添加的项目设置为当前选择。
添加项目的方法是相同的,只是引用的是不同框架中的ComboBox。框架索引从0-n,其中n是父窗口中的框架数量。
Set objOpt = document.CreateElement("OPTION")
objOpt.Value = a
objOpt.Text = Text1.value
window.parent.frames(0).Select1.add objOpt
Set objOpt = Nothing
window.parent.frames(0).Select1.selectedIndex = a
a = a + 1
这里有五个文本框、按钮和相应的ComboBox。每个按钮的脚本是动态生成的。ASP嵌入在脚本代码中,因此您不需要单独处理新行。
<%
Dim i
For i = 1 to 5
%>
Dim a<i%>
a<i%> = 1
Sub Button<i%>_onclick
If Text<i%>.value <> "" Then
Set objOpt = document.CreateElement("OPTION")
objOpt.Value = a<i%>
objOpt.Text = Text<i%>.value
window.parent.frames(0).Select<i%>.add objOpt
Set objOpt = Nothing
window.parent.frames(0).Select<i%>.selectedIndex = a<i%>
a<i%> = a<i%> + 1
End If
End Sub
<%
Next
%>
以下是文本框和按钮的HTML代码示例:
<INPUT id="Text<i%>" type="text" name="Text<i%>">
<INPUT id="Button<i%>" type="button" value="Add<i%>" name="Button<i%>">
这里将看到两种获取当前脚本父文件夹的方法。发现这在生成连接到应用程序目录子文件夹中的Access数据库的连接字符串时非常有用。
两种方法都使用Request方法的ServerVariables集合来获取正在运行的脚本的虚拟路径。然后使用Server对象的MapPath方法将此值映射到物理路径,以获取脚本的物理路径。第一种方法定位最后一个'\'的位置,并通过删除脚本文件名来获取父文件夹。
' 将当前文件的虚拟路径转换为物理路径
phypath = Server.MapPath(Request.ServerVariables("SCRIPT_NAME"))
' 定位从末尾的'\'位置
slashpos = InStrRev(phypath, "\")
' 分离文件夹名称
getpath = Left(phypath, slashpos - 1)
' 将当前文件的虚拟路径转换为物理路径
phypath = Server.MapPath(Request.ServerVariables("SCRIPT_NAME"))
' 创建FileSystemObject实例
Set fsobj = Server.CreateObject("Scripting.FileSystemObject")
' 创建一个代表文件的File对象,指定为phypath
Set fileobj = fsobj.GetFile(phypath)
' 获取fileobj的父文件夹
Set getdir = fileobj.ParentFolder