這裡所謂的複雜表單,是指表單中包含多種不同的輸入類型,比如下拉列錶框、單行文本、多行文本、數值等。在經常需要更換這類表單的場合,需要有一個表單的動態生成程序。本文介紹的正是這樣一個系統,它以數據庫保存表單定義數據,利用ASP腳本動態生成表單HTML代碼以及驗證表單輸入的腳本。
一、定義數據庫表結構
在Web上經常可以看到“每週調查”之類的表單,這就是一種需要經常更新的表單。如果有一個動態生成表單及其驗證腳本的程序,可以大大減少製作這些表單的工作量。
在本文的動態表單生成與驗證示例中,我們使用一個Access數據庫來存儲有關表單的定義信息,同時為簡單計,用戶在表單中輸入的數據也保存到同一數據庫。定義表單需要兩個表:第一個表(Definitons)用於表單輸入域的定義,第二個表(Lists)保存各個輸入域的附加信息,比如選擇列表的選擇項。
表Definitons包含如下字段:
FieldName——賦予表單輸入域的變量名字
Label——即文本標籤,顯示在輸入域前面的提示性文字
Type——單個字符,該字符表示表單輸入域的形式和輸入值的類型
具體如下:
(t)文本輸入框,即<INPUTTYPE="TEXT">。
(n)文本輸入框,但要求輸入數字值。
(m)備註型內容,用於註釋或其他大量文本的輸入,它是一個多行文本編輯框。
(b)要求輸入“是”或“否”。本實現中將用複選框來獲取這種輸入,複選框的文本標籤為“是”。如果用戶選中它,則返回值是“on”。
(r)單選按鈕。
(l)下拉列錶框。
Min——僅對數字型輸入值有效,在這裡給出最小值。在本例中有一個“Age”(年齡)數字型輸入框,它的最小值設定為1。
Max——該字段的值與輸入域形式有關。對於數字型輸入框,它表示的是允許的最大值。例如“Age”的Max值為100。對於文本輸入框,Max表示允許的最多字符個數。對於多行文本編輯框,Max表示可見區域的文本行數。
Required——表示是否必須輸入。這種類型的值如果沒有輸入,則輸入驗證程序將報告錯誤。在表單中,必須輸入的值以星號標記,並以腳註的形式提示用戶該類值必須輸入。
本文的示例表單是一個ASP程序員調查表,在Definitons表中該表單的定義主要如下:
FieldNameLabelTypeMinMaxRequired
Name姓名文本(t)-50否
Age年齡數字(n)1100否
Sex性別單選按鈕(r)--是