程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> ASP編程 >> 關於ASP編程 >> ASP中JavaScript處理復雜表單的生成與驗證第1/3頁

ASP中JavaScript處理復雜表單的生成與驗證第1/3頁

編輯:關於ASP編程
這裡所謂的復雜表單,是指表單中包含多種不同的輸入類型,比如下拉列表框、單行文本、多行文本、數值等。在經常需要更換這類表單的場合,需要有一個表單的動態生成程序。本文介紹的正是這樣一個系統,它以數據庫保存表單定義數據,利用ASP腳本動態生成表單HTML代碼以及驗證表單輸入的腳本。
  一、定義數據庫表結構
  在Web上經常可以看到“每周調查”之類的表單,這就是一種需要經常更新的表單。如果有一個動態生成表單及其驗證腳本的程序,可以大大減少制作這些表單的工作量。
  在本文的動態表單生成與驗證示例中,我們使用一個Access數據庫來存儲有關表單的定義信息,同時為簡單計,用戶在表單中輸入的數據也保存到同一數據庫。定義表單需要兩個表:第一個表(Definitons)用於表單輸入域的定義,第二個表(Lists)保存各個輸入域的附加信息,比如選擇列表的選擇項。
  表Definitons包含如下字段:
FieldName —— 賦予表單輸入域的變量名字 
Label —— 即文本標簽,顯示在輸入域前面的提示性文字 
Type —— 單個字符,該字符表示表單輸入域的形式和輸入值的類型
  具體如下:
  (t) 文本輸入框,即< INPUT TYPE="TEXT" >。
  (n) 文本輸入框,但要求輸入數字值。
  (m) 備注型內容,用於注釋或其他大量文本的輸入,它是一個多行文本編輯框。
  (b) 要求輸入“是”或“否”。本實現中將用復選框來獲取這種輸入,復選框的文本標簽為“是”。如果用戶選中它,則返回值是“on”。
  (r) 單選按鈕。
  (l) 下拉列表框。
  Min —— 僅對數字型輸入值有效,在這裡給出最小值。在本例中有一個“Age”(年齡)數字型輸入框,它的最小值設定為1。
  Max —— 該字段的值與輸入域形式有關。對於數字型輸入框,它表示的是允許的最大值。例如“Age”的Max值為100。對於文本輸入框,Max表示允許的最多字符個數。對於多行文本編輯框,Max表示可見區域的文本行數。
  Required —— 表示是否必須輸入。這種類型的值如果沒有輸入,則輸入驗證程序將報告錯誤。在表單中,必須輸入的值以星號標記,並以腳注的形式提示用戶該類值必須輸入。
  本文的示例表單是一個ASP程序員調查表,在Definitons表中該表單的定義主要如下:
  FieldName Label Type Min Max Required
  Name 姓名 文本(t) - 50 否
  Age 年齡 數字(n) 1 100 否
  Sex 性別 單選按鈕(r) - - 是
  E-mail 郵件地址 文本(t) - - 是
  Language 編程語言 下拉列表框(l) - - 否
  表Lists用於保存輸入域定義的一些附加信息,本例有“Sex”和“Languages”兩個輸入值要用到它。表Lists非常簡單,只包含如下三個字段:
  FieldName —— 當前記錄屬於哪個表單輸入域
  Value —— 選擇項的值
  Label —— 用戶所看到的選擇項的提示文本
  輸入域“Sex”只能從兩個值選取:“男”或“女”。“Language”列出了幾種可應用於ASP環境的編程語言,包括:VBScript,JavaScript,C,Perl和“其他”。
  第三個表“Records”保存用戶提交的內容,它也包含三個字段,每個記錄對應用戶的一次提交:
  Record —— 備注類型,以查詢字符串形式保存的用戶輸入。
  Created —— 用戶提交該表單的日期和時間。 RemoteIP —— 表單提交者的IP地址。
  在實際應用中可能要收集更多有關用戶的信息,為簡單計,本例只記錄提交時間和用戶IP地址這兩個附加信息。
  二、准備工作
  在完成上述數據結構和表單的定義之後,接下來就可以編寫腳本。腳本的任務是生成表單以及處理用戶提交的表單。
  無論是表單的生成還是處理,以下三個過程(任務)都是必不可少的:第一是確定驗證類型,在生成表單時驗證類型值通過查詢字符串獲得,在處理表單時從表單隱藏域讀取。程序支持的表單驗證方式共有以下四種類型:不進行驗證,客戶端JavaScript驗證,服務器端ASP腳本驗證,客戶端和服務器端都進行驗證(代號分別為0到3)。如果沒有在查詢字符串中指定合法的驗證方式,則默認第四種驗證方式。這種驗證處理方式使得我們可以靈活地應用這個表單生成、處理系統,當客戶端禁止使用JavaScript驗證時就可以僅在服務器端執行驗證過程。下面是確定驗證類型的代碼:
  檢查驗證類型
以下是引用片段:
  iValType = Request.QueryString("val") 
  If IsNumeric(iValType) = False Then iValType = 3 
  If iValType > 3 or iValType < 0 Then iValType =3 
第二個任務是打開數據庫連接,創建兩個記錄集對象:RS對象,這是本程序中的主要記錄集對象,用來操作Definitions表;RSList對象,主要用於從Lists表讀取數據。示例程序提供兩種數據庫連接方法:使用ODBC DSN或不使用ODBC DSN(使用DSN時需要先創建名為Dynamic的DSN,使用DSN連接數據庫的代碼已經被注釋掉)。
  第三個任務是在生成(或處理)表單腳本的前面(和後面)輸出一些靜態的HTML代碼,比如< HEAD >< /HEAD >,以及在腳本運行結束的時候釋放RS、RSList等對象占用的資源。
  除了完成上述任務的代碼外,示例應用中其余ASP腳本可能生成的頁面有兩種類型:提問表單(見上圖)以及表單提交後出現的結果頁面(後者同時還負責用戶提交結果的記錄)。要確定究竟運行哪一部分腳本,最簡單的方法就是檢查是否已經提交表單:如是,則處理表單;否則生成表單。
  是生成表單還是處理表單? 

  If Len(Request.Form) = 0 Then 
  '生成表單 
  ...略... 
  Else 
  '處理表單 
  ...略... 
  End If 
當前1/3頁 123下一頁閱讀全文
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved