HTML表單是與使用者互動的強大工具;然而,由於歷史和技術上的原因,如何充分發揮它們的潛力並不總是顯而易見的。在本章節中,我們將介紹HTML表單的所有方面,從結構到樣式,從資料處理到自訂小工具。
表單:採集不同類型的使用者輸入數據,傳送給伺服器,實現使用者和伺服器之間的資料互動。
表單標籤form 聲明資料收集的範圍,只要是在form中的,都是要收集的資料。
一個頁面中可以有多個form標籤,只能是並列關係,不能嵌套。當使用者向伺服器端傳送資料時,一次只能提交一個表單中的資料。如果要提交多個表單就需要用js中的非同步互動。
<form> 元素
HTML 表單用於收集使用者輸入。
元素定義HTML 表單:
<form>.formelements.</form>
1. HTML 表單包含表單元素。
表單元素指的是不同類型的input 元素、複選框、單選按鈕、提交按鈕等等。
(1)<input> 元素
<input> 元素是最重要的表單元素。 <input> 元素有許多形態,依照不同的type 屬性。這是本章中使用的類型:
(2)文字輸入
<input type=text> 定義用於文字輸入的單行輸入欄位:
<!DOCTYPEhtml><html><body><form>姓氏:<br><inputtype=textname=firstname><br>名字:<br><inputtype=textname=lastname></form><p>請注意表單本身是不可見的。 </p><p>同時請注意文字欄位的預設寬度是20個字元。 </p></body></html>
呈現的結果如圖:
(3)單選按鈕輸入
<input type=radio> 定義單選按鈕。單選按鈕允許使用者在有限數量的選項中選擇其中之一:
<!DOCTYPEhtml><html><body><form><inputtype=radioname=sexvalue=1checked>男<br><inputtype=radioname=sexvalue=2>女</form></body></html>
呈現的結果如圖:
(4)提交按鈕
<input type=submit> 定義用於向表單處理程序(form-handler)提交表單的按鈕。表單處理程序通常是包含用來處理輸入資料的腳本的伺服器頁面。表單處理程序在表單的action 屬性中指定:
<!DOCTYPEhtml><html><body><formaction=/demo/demo_form.ashx>姓氏:<br><inputtype=textname=firstnamevalue=李><br>名稱:<br><inputtype=textname=lastnamevalue=雷><br><br><inputtype=submitvalue=Submit></form><p>如果您點選提交,表單資料會被傳送到名為demo_form.ashx的頁面進行後續處理。 </p></body></html>
呈現的結果如圖:
2. 表單屬性:
(1)Action 屬性
action 屬性定義在提交表單時執行的動作。向伺服器提交表單的通常做法是使用提交按鈕。通常,表單會被提交到web 伺服器上的網頁。在上面的例子中,指定了某個伺服器腳本來處理被提交表單:
<formaction=action.php>
如果省略action 屬性,則action 會被設定為目前頁面。
(2)Method 屬性
method 屬性規定提交表單時所使用的HTTP 方法(GET 或POST):
<formaction=action.phpmethod=GET>
或:
<formaction=action.phpmethod=POST>
何時使用GET?
您能夠使用GET(預設方法):如果表單提交是被動的(例如搜尋引擎查詢),並且沒有敏感資訊。當您使用GET 時,表單資料在頁面網址列中是可見的:
action_page.php?firstname=韓&lastname=梅梅
註:GET 最適合少量資料的提交。瀏覽器會設定容量限制(255個字元)。
何時使用POST?
您應該使用POST:如果表單正在更新數據,或包含敏感資訊(例如密碼)。 POST 的安全性更加,因為在頁面網址列中被提交的資料是不可見的。
(3)Name 屬性
如果要正確地被提交,每個輸入欄位必須設定一個name 屬性。本範例只會提交Last name 輸入欄位:
<!DOCTYPEhtml><html><body><formaction=/demo/demo_form.ashx>姓氏:<br><inputtype=textvalue=李><br>名字:<br><inputtype=textname=lastnamevalue=雷>< br><br><inputtype=submitvalue=Submit></form><p>如果您點選提交,表單資料會被傳送到名為demo_form.ashx的頁面。 </p><p>姓氏不會被提交,因為此input元素沒有name屬性。 </p></body></html>
呈現的結果如圖:
3. 表單控制項
用<fieldset> 組合表單數據
<fieldset> 元素組合表單中的相關資料<legend> 元素為<fieldset > 元素定義標題。
<!DOCTYPEhtml><html><body><formaction=/demo/demo_form.ashx><fieldset><legend>個人資訊:</legend>姓氏:<br><inputtype=textname=firstnamevalue=Mickey><br>名字:<br><inputtype=textname=lastnamevalue=Mouse><br><br><inputtype=submitvalue=Submit></fieldset></form></body></html>
表單用來收集使用者數據,這些數據需要填寫在各種控制項中。 HTML 控制項也透過標籤來實現,只是它們會呈現一些特殊的外觀,並具有一些互動功能。
HTML 表單中可以包含如下表所示的控制項: