HTML 表單用于搜集不同類型的用戶輸入。
<form> 元素定義 HTML 表單,相當(dāng)于表單的外殼,用于把用戶輸入的不同類型的數(shù)據(jù)提交到后臺。
<form>元素的屬性
- name:表單的名稱
- action: 表單提交的地址
- method:提交保單的方法有g(shù)et和post,與http協(xié)議的這兩種方式相對應(yīng)。異同如下:
get將表單中數(shù)據(jù)的按照variable=value的形式,添加到action所指向的URL后面,并且兩者使用“?”連接,而各個變量之間使用“&”連接;post是將表單中的數(shù)據(jù)放在form的數(shù)據(jù)體中,按照變量和值相對應(yīng)的方式,傳遞到action所指向URL。
get是不安全的,因為在傳輸過程,數(shù)據(jù)被放在請求的URL中,而如今現(xiàn)有的很多服務(wù)器、代理服務(wù)器或者用戶代理都會將請求URL記錄到日志文件中,然后放在某個地方,這樣就可能會有一些隱私的信息被第三方看到。另外,用戶也可以在瀏覽器上直接看到提交的數(shù)據(jù),一些系統(tǒng)內(nèi)部消息將會一同顯示在用戶面前。post的所有操作對用戶來說都是不可見的。
get傳輸?shù)臄?shù)據(jù)量小,這主要是因為受URL長度限制;而Post可以傳輸大量的數(shù)據(jù),所以在上傳文件只能使用post。
get限制Form表單的數(shù)據(jù)集的值必須為ASCII字符;而post支持整個ISO10646字符集。
get是用來從服務(wù)器上獲得數(shù)據(jù),而post是用來向服務(wù)器上傳遞數(shù)據(jù)。
target:定義在何處打開action(默認(rèn):_self)
enctype:被提交數(shù)據(jù)的編碼(默認(rèn):url-encoded)
application/x-www-form-urlencoded:在發(fā)送前編碼所有字符(默認(rèn))
text/plain:空格轉(zhuǎn)換為 "+" 加號,但不對特殊字符編碼
multipart/form-data:使用包含文件上傳控件的表單時,必須使用該值
<form>包含的表單元素
- <input>
<input> 元素有很多形態(tài),由type 屬性定義。必須包含name屬性,用于記錄提交數(shù)據(jù)的名稱。
type屬性類型描述:
- text 常規(guī)文本輸入。可用value屬性定義默認(rèn)值??捎?placeholder屬性提升用戶輸入,submit提交表單時,此提示不會被提交
- password 密碼輸入,字符輸入后自動隱藏??捎?placeholder屬性提升用戶輸入,submit提交表單時,此提示不會被提交
- checkbox 復(fù)選框輸入(多個選項中可選擇多個選項)。同一組數(shù)據(jù),對應(yīng)的name屬性相同,每個選項的值由value屬性定義
- radio 單選按鈕輸入(多個選項中選擇一個選項)。同一組數(shù)據(jù),對應(yīng)的name屬性相同,每個選項的值由value屬性定義
- file 選擇文件??稍瓌t的文件類型由accept屬性定義
- reset 重置用戶輸入
- button 顯示按鈕,不能用于提交表單
- submit 提交按鈕(提交表單)
<input>為行內(nèi)元素,在使用時用<div>將<label>和<input>包裹,實現(xiàn)分段效果
2.<select>
<select>元素定義下拉列表。必須包含name屬性,用于記錄提交數(shù)據(jù)的名稱
下拉列表元素由<option>標(biāo)簽定義。列表通常會把首個選項顯示為被選選項??赏ㄟ^添加 selected 屬性來定義預(yù)定義選項。列表值由value屬性定義。
3.<textarea>
<textarea>元素定義多行輸入字段(文本域)。必須包含name屬性,用于記錄提交數(shù)據(jù)的名稱。行內(nèi)元素。
4.<label>
<label>元素用來提示<input>、<select>、<textarea>等輸入元素表頭,可用for屬性與屬入元素id相關(guān)聯(lián),幫助輸入元素聚焦鼠標(biāo)輸入。行內(nèi)元素。