FDS’s Blog

2009年7月30日

在Asp程序中取得表单所有内容的方法

Filed under: ASP — 标签: — FDS @ 11:12

在Asp中如何得到所有表单的名称跟对应的值。其实,这个问题很简单,但是可能还是有很多人不知道该怎么做,所以特地写下来,仅供参考。在Asp程序中,用来获得客户端数据的对象是 Request,这个对象给我们提供了很多的方法以及属性。比如,有这样一个Form,

<FORM METHOD=POST name=cqq ACTION=”">
 <INPUT TYPE=”text” NAME=”username”>
 <INPUT TYPE=”text” NAME=”password”>
 <INPUT TYPE=”checkbox” NAME=”sex” value=”male”>
 <INPUT TYPE=”checkbox” NAME=”sex” value=”female”>
 <INPUT TYPE=”submit”>
 </FORM>

         如果我们要取得 username 中的值,我们可以这样写:Request.Form(“username”)

 这个大家都会,其实这个Form是一个集合,也就是说表单中的所有的内容都存放在这个集合

当中,我们要取得某个元素的值,只需要在Request.Form() 这里制定元素的名称就可以了,比如

上面的username。

          那么,我们要取得集合中所有的值呢?  那很简单,什么都不用跟就是了,直接写Request.Form

就得到了集合中所有元素的名称跟值。  下面是一个对集合操作的语句:

<%
For each obj in Request.Form
     Response.write obj & ” ” & Request.Form(obj) &  ” <br>”
Next
%>

2008年12月18日

ASP中使用HTML表单

Filed under: ASP — 标签: — FDS @ 17:22

使用 ASP Request 对象,您可以创建一个简单而功能强大的脚本来收集和处理 HTML 表单数据。在本主题中,您将不仅学会如何创建基本的表单处理脚本,而且还将获得用于验证 Web 服务器和用户浏览器上的表单信息的一些有用技术。

关于 HTML 表单
HTML 表单是收集 Web 信息最常用的方法,是在 Web 页上提供用户界面控件的特殊的 HTML 标记的排列。文本框、按钮和复选框都是典型的控件,这些控件使用户和 Web 页实现交互,并且将信息提交给 Web 服务器。

下面的 HTML 示例产生一个表单,在表单中,用户可以输入姓名、年龄并包含一个将这些信息提交给 Web 服务器的按钮。该表单也包含了一个隐含的控件(Web 浏览器不显示),可以用该控件向 Web 浏览器传递附加信息。

<FORM METHOD=”POST” ACTION=”myfile.asp”>
<INPUT TYPE=”text” NAME=”firstname”>
<INPUT TYPE=”text” NAME=”lastname”>
<INPUT TYPE=”text” NAME=”age”>
<INPUT TYPE=”hidden” NAME=”userstatus” VALUE= “new”>
<INPUT TYPE=”submit”  VALUE=”Enter”>
</FORM>
处理 ASP 输入的表单
在表单向 Web 服务器提交信息时,用户的 Web 浏览器请求用 HTML <FORM > 标记的 ACTION 属性所指定的 .asp 文件(在前面的例子中,该文件被称为 Myfile.asp)。.asp 文件包含了处理表单值(如显示结果表或从数据库查询信息)的脚本。

可以通过三种途径用 .asp 文件收集 HTML 表单的值

静态的 .htm 文件可以包含一个将其数值邮送给 .asp 文件的表单。
.asp 文件可以创建一个将其信息邮送给另一个 .asp 文件的表单。
.asp 文件可以创建一个将其信息邮送给自身的表单,即包含该表单的文件。
前两个方法的操作方式相同,当表单与网关程序交互时,除 ASP 之外,可以包含读取和响应用户选择的命令。

创建一个包含表单定义且传送信息给自身的 .asp 文件较复杂,但却是有很强功能的处理表单的方法。这一过程在 验证表单输入 中演示。

获得表单输入
ASP Request 对象提供了两种集合,在很大程度上简化了检索附加在 URL 请求上的表单信息的任务。

QueryString 集合
QueryString 集合获取作为跟在请求的 URL 的问号后面的文本传递给 Web 服务器的值。通过使用 HTTP GET 方法或手工将表单的值添加到 URL,表单的值可以被附加在请求的 URL 之后。

例如,如果先前的表单示例使用 GET 方法 (ACTION = “GET”) 且用户键入 Jeff、Smith 和 30,那么下面的 URL 请求将被发送给服务器:

http://scripts/Myfile.asp?firstname=Jeff&lastname=Smith&age=30&userstatus=new

Myfile.asp 包含下面的表单处理脚本:

Hello, <%= Request.QueryString(“firstname”) %>   <%= Request.QueryString(“lastname”) %>.
You are  <%= Request.QueryString(“age”) %>  years old.

<%
If Request.QueryString(“userstatus”)  = “new user” then
Response.Write”This is your first visit to this Web site!”
End if
%>
在这种情况下,Web 服务器将返回下面的文本给用户的 Web 浏览器:

Hello, Jeff Smith. You are 30 years old. This is your first visit to this Web site!
QueryString 集合有一个可选参数,可用来访问显示在请求正文中的多个值中的一个。也可以使用 Count 属性计算一个特殊类型的值的出现次数。

例如,表单包含一个多项目的列表框可以提交下面的请求:

http://list.asp?food=apples&food=olives&food=bread

您也可以使用下面的命令去对多个值计数:

Request.QueryString(“food”).Count
如果想显示多个值的类型,List.asp 应包含下面的脚本;

<%Total = Request.QueryString(“food”).Count%>
<%For i = 1 to Total%>
<%= Request.QueryString(“food”)(i)  %> <BR>
<%Next%>
上述脚本将显示:
apples
olives
bread
Form 集合
当使用 HTTP GET 方法去向 Web 服务器传递长而复杂的表单值时,将可能丢失信息。大多数的 Web 服务器倾向于严格控制 URL 查询字符串的长度,以便用 GET 方法传送的冗长的表单值被截断。如果您需要从表单发送大量信息到 Web 服务器,就必须使用 HTTP POST 方法。此法用于在 HTTP 请求正文中发送表单数据,而且发送的字符的个数可以无限多。也可以使用 ASP Request 对象的 Form 集合检索用 POST 方法发送的值。

Form 集合与 QueryString 集合存储数值的方式相同。例如,如果用户用一长串名称填充表单,您就可以用下面的脚本检索这些名称:

<% For i = 1 to Request.Form.Count %>
<% =Request.Form(“names”)(i) %>
<% Next %>
验证表单输入
一个好的表单处理脚本在处理数据前,应先验证输入表单的信息是否有效。验证脚本可以检验用户输入到表单的信息类型是否正确。例如,如果您的 Web 站点包含一个表单,该表单允许用户计算财务信息,那么在处理结果之前,需要验证用户确实输入了数值信息而不是文本。

一个非常方便的验证表单输入的方法是创建一个向自身传递信息的表单。在这种情况下,.asp 文件包含可获取信息的表单。例如,下面的脚本通过向自身传递信息来验证用户是否在 “age” 表单字段中输入了数值:

<% If Isnumeric(Request.QueryString(“Age”)) then %>
<p>Hello, your age is <%=Request.QueryString(“age”)%>
<%Else %>
<p>Please enter a numerical age.
<%End If %>

<FORM METHOD= “POST”  ACTION=”verify.asp”  >
Name: <INPUT TYPE=”text” NAME=”Name” >
Age:  <INPUT TYPE=”text” NAME=”Age” >
<INPUT TYPE=”submit” VALUE=”Enter”>
</FORM>
在这个例子中,脚本也在包含表单的同一 Verify.asp 文件中。表单通过在 ACTION 属性中指定 Verify.asp 向自身传送信息。

您也可以创建客户端脚本来检验用户是否输入了有效的信息。验证用户在 Web 浏览器上的输入除了更迅速地向用户提示表单项错误外,还可以减少 Web 服务器的网络流量。下面的脚本运行在用户的 Web 浏览器上,在将信息提交到 Web 服务器之前,验证用户信息。

<SCRIPT LANGUAGE=”VBScript”>
<!–
Sub btnEnter_OnClick
Dim TheForm
Set TheForm = Document.MyForm
If IsNumeric(TheForm.Age.Value) Then
TheForm.submit
Else
Msgbox “Please enter a numerical age.”
End if
End Sub
//–>
</SCRIPT>

<FORM  METHOD= “POST” NAME= MyForm  ACTION=”myfile.asp”  >
Name: <INPUT TYPE=”text” NAME=”Name” >
Age:  <INPUT TYPE=”text” NAME=”Age” >
<INPUT TYPE=”button” NAME=”btnEnter”  VALUE=”Enter”>
</FORM>

2008年11月26日

用JavaScript避免表单重复提交

Filed under: JAVASCRIPT — 标签:, — FDS @ 14:41

论坛里有很多无恶意的重复帖子,这里介绍一个办法,用JavaScript避免重复提交,下面是部分源码:

<script Language=’JavaScript’>
function formsubmit() {
Today = new Date();
var NowHour = Today.getHours();
var NowMinute = Today.getMinutes();
var NowSecond = Today.getSeconds();
var mysec = (NowHour*3600)+(NowMinute*60)+NowSecond;
if((mysec-document.formsubmitf.mypretime.value)>600)
//600只是一个时间值,就是5分钟内禁止重复提交,值随你高兴设
{
document.formsubmitf.mypretime.value=mysec;
}
else
{
alert(‘ 按一次就够了,请勿重复提交!请耐心等待!谢谢合作!’);
return false;
}
document.forms.formsubmitf.submit();
}
</script>

</HEAD>

<BODY BGCOLOR=”#FFFFFF”>
<form name=formsubmitf id =”the” method=”post” action=”XXX.asp”>
<input type=hidden name=’mypretime’ value=’0′> //这句不能少,用隐含变量传递一个时间初值

//这里是你要提交的内容

<input type=”button” value=”写好了” name=”button1″ class=”4round” onclick=’formsubmit()’>&nbsp;<font class=”red”>(请按一次,耐心等待!)</font>&nbsp;<input type=”reset” value=”重 写” name=”button2″ class=”4round”>
</form>

用了这个代码,论坛的重复帖子明显减少,不过有个缺点,就是刷新一次,检测就不起作用,好处就是利用JS检测,不需要额外的权限支持,至于效果如何,用不用就随你们了,(最好前端跟后端都加上检测)

2008年11月20日

用JavaScript验证表单中的email地址是否合法完整实例

Filed under: HTML,JAVASCRIPT — 标签:, , — FDS @ 10:09

在设计表单是,经常要遇到要求输入EMAIL的。这里就用一个完整实例来说明用JavaScript验证email地址的完美方法。

以下是代码部分。

提示:你可以先修改部分代码再运行。

2008年10月29日

关闭表单输入是的输入法

Filed under: HTML — 标签:, — FDS @ 17:57

在填写表单时,有时候输入数据时不需要使用其他输入法模式,我们可以关闭输入法状态,看以下的例子。

提示:你可以先修改部分代码再运行。

2008年10月22日

设计一个通用表单验证函数

Filed under: JAVASCRIPT — 标签:, , — FDS @ 09:25

不管是动态网站,还是其它B/S结构的系统,都离不开表单,表单做为客户端向服务器提交数据的载体担当相当重要的角色。这就引出了一个问题,提交的数据合法吗?摆在我们面前的问题就是验证这些数据保证所提交的数据是合法的.所以,我们写了一个大堆的验证函数.当我们开始新的一个项目的开发时,我们又得写一大堆的验证函数,然后再调试这一大堆的函数…
本文将介绍一种方法来提高我的代码的可重用性,提高我们的开发效率.

个人以为表单的验证应该包含两部分:
第一,判断用户输入的数据是否合法.
第二,提示用户你的数据为什么是不合法的.

所以,我们的通用表单验证函数要实现的功能就是:
第一,取得用户输入的数据GetValue(el)
第二,验证用户的数据CheckForm(oForm)
IE支持自定义属性,这就是这个通用函数实现的基础
我们可以在表单元素上加入描述自身信息的属性.有点像XML吧.
check属性:该属性用于存储数据合法性的正则表达式.
warning属性:该性性用于存储出错误提示信息.
第三,返回有误的表单提示GoBack(el)
这三个步骤的触发事件是onsubmit,记住是return CheckForm(this)
搞错了就全功尽弃了 :)
<form onsubmit=”return CheckForm(this)”>

写到这里,整体框架就出来了,通过取得表单元素的check属性,取得字符串,构建正则表达式.再验证其值.如果通过验证就提交,如是数据不合法则取得表单元素的warning属性,产生提示信息.并返回到该表单元素.整个的框架也比较简单.
我们要做的就是写好正则表达式!

接下来我们来分析一下所有的表单元素
按其共性,我们将它们分为三类
每类表单的特点不一样,我们的目标就是写出通用的.

1.文输入框Text
<input type=”text” name=”txt”>
<input type=”password” name=”pwd”>
<input type=”hidden” name=”hid”>
<input type=”file” name=”myfile”>
<textarea name=”txts”></textarea>
2.单多选框Choose
<input type=”checkbox” name=”c”>
<input type=”checkbox” name=”c”>
<input type=”radio” name=”r”>
<input type=”radio” name=”r”>
3.单多下拉菜单Select
<select name=”sel”></select>
<select name=”sels” multiple></select>
讲了一堆”大道理”太抽象了,代码更有说服力!

提示:你可以先修改部分代码再运行。

2008年10月17日

判断表单的输入框是否为空,并用光标的焦点定指向输入框

Filed under: JAVASCRIPT — 标签:, , , — FDS @ 14:57

我们通常设计表单都会碰到这样也个情况,一个表单内的文本框必须要输入内容,在没有输入内容提交时就会提示出错,那么如何防止客户端在没有输入时就提交表单呢?请看下面一个例子,如果您没有输入任何值时就会出现提示对话框。
示例:

提示:你可以先修改部分代码再运行。

用超链接的方式实现提交表单的例子

Filed under: JAVASCRIPT — 标签:, , — FDS @ 09:17

今天举个用超链接的方式实现提交表单的例子,有时候很有作用哦,以下是示例:

提示:你可以先修改部分代码再运行。

Powered by WordPress