Form Syntax
HTML 的 <form> 是用來收集使用者輸入的資料,在 form 標籤內會包含許多 Form elements,Form elements 是 <input> 標籤下各種不同的type,像是 text, radio, submit 等等,格式如下:
Type | Description |
---|---|
<input type=”text”> | Defines a one-line text input field |
<input type=”radio”> | Defins a radio button (for selecting one of many choices) |
<input type=”submit”> | Defines a submit button (for submitting the form) |
input Element
<input> 是表單中最主要的一個 element,它可以根據 type attribute 而有不同的顯示方式和功能。
Text Input
<input type=”text”> 定義一個text input。
Result:
Radio Button Input
<input type=”radio”> 定義一個 radio button。
radio button 讓使用者只能選擇一個選項。
Result:
The Submit Button
<input type=”submit”> 定義一個按鈕用來傳送表單資料。
透過 Form 的 action attribute 來傳送至指定的頁面去。
Result:
Action Atrribute
Action attribute 用來定義 submit 以後的 form data,要送往哪個 Web Page,如果沒有寫 action attribute 會將資料送往當前頁面。
Method Attribute
method attribute 定義要使用哪一種 HTTP method,在這有兩個選項:
GET (Default): 這個方式送出的資料會出現在 web page 的 address field 之中,所以像密碼或是其他重要資訊的資料就不能用這種方式傳送,且 GET 方式有資料大小限制。
/action_page.php?firstname=Mickey&lastname=Mouse
POST : 這個方式不會將資料顯示在 address field,會打包起來送去給指定的頁面,且沒有大小限制,所以一些重要資料建議使用這個方式。
|
|
Name Attribute
每一個 input field 必須要有 name attribute,才能在 submit 時會被送出,反之則不會被當作資料送出。
如下範例,只有 “lastname” 會在 submit 時被送出。
Grouping Form Data with fieldset
使用<fieldset>可以將表單分類,<legend> 則用來定義這一個表單的標題名稱。
Result:
Form Elements
Select Element
<select> 會生成一個 下拉式選單(drop-down list)。
<option> 定義每一個可選的項目。
selected 定義初始選擇的項目。
textarea Element
<textarea>定義多行的文字輸入。
rows attribute 定義在 textarea 可視的行數。
cols attribute 定義在 textarea 可視的寬度。
Result:
button Element
<button>定義一個可點選的按鈕。
HTML5 新增了三個 Elements
- <datalist>
- <keygen>
- <output>
datalist Elemnet
<datalist>除了 Safari 不支援外,其他 Browser 都支援。
它也是提供一個下拉式選單,不過跟 <select>的差異在於,它可讓使用者另外自己輸入想要的內容。
<input>裡的 list attribute 必須與 <datalist> 裡的 id attribute 的值一致。12345678910<form action="/action_page.php"><input list="browsers"><datalist id="browsers"><option value="Internet Explorer"><option value="Firefox"><option value="Chrome"><option value="Opera"><option value="Safari"></datalist></form>
keygen Element
<keygen> 提供加密的方式傳送資料,當表單 submit 時會產生兩個 key,public key 和 private key,public key 會送至 server,而private key 會留在本地,未來可以作為驗證。
Output Element
<output>可用來輸出script計算的值。
Input Types
Password
<input type=”password”> 定義一個 password field,輸入的資料將會被遮蔽。
Result:
Reset
<input type=”reset”> 定義一個 reset button,會重置所有在 form 裡的資料回預設值。
Result:
Checkbox
<input type=”checkbox”> 定義一個checkbox清單,可以讓使用者選擇零到多個選項。
Result:
Button
<input type=”button”> 定義一個按鈕。
Result:
HTML5 New Input Types
HTML5 新增的 input types 如下:
- color
- date
- datetime-local
- month
- number
- range
- search
- tel
- time
- url
- week
Color
<input type=”color”> 會產生一個 color picker 給使用者來選擇,如果 browser 有support就會出現。
Date
<input type=”date”> 會產生一個 date picker 給使用者來選擇,如果 browser 有support就會出現。
Datetime-local
<input type=”datetime-local”> 提供使用者日期和時間的設定,但不包括 time zone ,如果 browser 有support就會出現。
<input type=”email”>,提供一個 input field 會檢查使用者輸入的資料是否符合 email 格式,如果 browser 有support就能驗證email format。
Month
<input type=”month”> 提供使用者選擇 月 跟 年,如果 browser 有support就會出現。
Number
<input type=”number”> 提供一個可選擇數字的 input field,你可以限制數字的範圍。
Range
<input type=”range”> 定義一個類似 slide control,可使用者滑動來選擇數值,預設的範圍是 0 ~ 100,可自己指定 min, max, step attribute來限制一些條件。
Search
<input type=”search”> 提供一個搜尋框, Browser會將其調整圓邊且提供清除輸入資料的叉叉按鈕,
Tel
<input type=”tel”> 提供一個輸入電話號碼的 input field,不過現在幾乎各家 Browser都還不支援。
Time
<input type=”time”> 提供使用者選擇時間但不包含 time zone,
如果 browser 有support就會出現。
URL
<input type=”url”> 提供一個 input field 可以驗證使用者輸入的資料是否符合 URL fromat,如果 browser 有支援就可提供驗證功能。
Week
<input type=”week”> 提供使用者選擇 週 和 年,如果 browser 有support就會出現。
Input Attributes
下表是 input 標籤內可用的一些限制條件
Attribute | Description |
---|---|
disabled | Specifies that an input field should be disabled |
max | Specifies the maximum value for an input field |
maxlength | Specifies the maximum number of character for an input field |
min | Specifies the minimum value for an input field |
pattern | Specifies a regular expression to check the input value against |
readonly | Specifies that an input field is read only (cannot be changed) |
required | Specifies that an input field is required (must be filled out) |
size | Specifies the width (in characters) of an input field |
step | Specifies the legal number intervals for an input field |
value | Specifies the default value for an input field |
Value
設定 input field 裡的初始值。
Readonly
設定 input field 只能 readonly不能被修改,在 submit 時資料依然能夠被傳送。
Disabled
功能上與 Readonly 相當接近,但 disabled 在 submit 時不會被傳送出去。
Size
設定 input field 的長度。
以下是 HTML5 為<input>新增的 Attributes
- aotocomplete
- autofocus
- form
- formaction
- formenctype
- formmethod
- formnovalidate
- formtarget
- height and width
- list
- min and max
- multiple
- pattern
- placeholder
- required
- step
以下是 HTML5 為<form>新增的 Attributes
- autocomplete
- novalidate
Autocomplete
用來設定表單的自動完成是否開啟,當有開啟時 Browser 會自動完成使用之前輸入過的資料,在表單中可以各別設定 input field 是否開啟或關閉,autocomplete attribute 可用於 <form>和<input>中。
Novalidate
這是個給 <form> 使用的 attribute,當設定時傳送表單資料,需驗證的欄位將不會被驗證。
Autofocus
當設定這個 attribute 時,頁面一載入便會自動focus到設定的 input field上。
Form
這個屬性可以將 input field 和 表單關聯起來,即使 input field 不在 <form> 的標籤之中。
Formaction
可以用來覆寫原本的 action 所導向的頁面,用於 type=”submit” 和 type=”image”。
Formenctype
設定表單資料傳送時的編碼方式,只有在 method 是 post 時才有效用,用於 type=”submit” 和 type=”image”。
Formmethod
可覆寫表單傳送時用的 http method,用於 type=”submit” 和 type=”image”。
Formnovalidate
可覆寫表單的novalidate的值,讓資料無需驗證即可傳送,用於 type=”submit”上。
Formtarget
可以覆寫 form 的 target attribute,可自訂要導向新頁面或是其他可用的參數,在 type=”submit”, type=”image”中使用。
Height and Width
這兩個屬性使用在 <input type=”image”>之中,定義圖片的寬與高。
List
這個屬性是跟 <datalist> 一起使用。
Min and Max
定義 <input> 的最小值與最大值,在以下 input types 中使用:
number, range, date, datetime-local, month, time and week。
Multiple
可以讓使用者有多種選項可選擇,主要用於這兩個 input types: email, file。
Pattern
可在 <input> 中設定正規表示式去檢查,用於以下幾個 input types: text, search, url, tel, email, and password.
Placeholder
用來提示使用者該在 input field 輸入怎樣的資料,用於以下幾個 input types: text, search, url, tel, email, and password.
Required
定義指定的 input field 需要填寫資料才能夠進行 submit,用於以下幾個 input types: text, search, url, tel, email, password, date pickers, number, checkbox, radio, and file.
Step
定義 <input> element 中數字類型的輸入,每次值增加或減少變化時的基底為多少,在 range 中可以與 min, max 共同使用,用於以下幾個 input types: number, range, date, datetime-local, month, time and week.