<form> 是收集使用者資料的容器,定義資料如何封裝、送往何處、由誰處理。理解其屬性與限制,是設計正確表單的前提。
<form name="表單名稱" method="get|post" action="處理程式URL">
... 表單控制項 ...
</form>
| 屬性 | 說明 | 關鍵備註 |
|---|---|---|
method | 資料傳輸方式 | post:HTTP 主體;get:URL 查詢字串。機密資料必用 post。URL 長度限制 ~2KB,長表單用 post。 |
action | 接收資料的伺服器端程式 URL | 相對/絕對路徑皆可;省略預設為當前頁 (自我回傳)。 |
onSubmit | 提交前觸發的事件處理程式 | 回傳 false 可取消提交 (JS 驗證常用)。 |
onReset | 重置前觸發的事件處理程式 | 同理可攔截重置行為。 |
target | 回應顯示的目標視窗 | _blank 新視窗、_self 當前 (預設)、_parent 父框架、_top 最頂層、iframe名稱 指定框架。 |
name | 表單識別名稱 | 供腳本 document.forms["name"] 或 document.表單名 存取。 |
enctype | 編碼類型 (POST 專用) | application/x-www-form-urlencoded (預設);multipart/form-data (檔案上傳);text/plain (罕用)。 |
accept-charset | 伺服器接受的字元編碼 | 如 UTF-8、GB2312;預設為頁面編碼。 |
資料是否包含密碼/信用卡/個資?
是 → 必用 POST + HTTPS
否 → 資料量是否大 / 結果需可書籤分享?
大 / 不需分享 → POST
小 / 需分享 (搜尋、分頁) → GET
<form>...<form>...</form>...</form> 為非法 HTML,瀏覽器行為未定義。<input>、<select>、<textarea>、<button>、<fieldset>、<label>、<output> 皆須置於 <form> 內 (HTML5 允許 form 屬性關聯外部表單)。method="get" 時,action URL 若已含查詢字串,瀏覽器行為不一致 (有的合併、有的覆蓋);建議 action 不帶參數,統一由表單欄位提供。<form method="post" action="process.asp" onSubmit="return validateForm()">
<label for="username">帳號:</label>
<input type="text" id="username" name="username" required>
<label for="pwd">密碼:</label>
<input type="password" id="pwd" name="pwd" required>
<input type="submit" value="登入">
<input type="reset" value="重填">
</form>
<script>
function validateForm() {
// 簡單前端驗證,真正安全仍靠伺服器端
return true;
}
</script>
<label for="id"> 或包裹 <label>文字 <input...></label>,點擊文字即聚焦控制項。<fieldset> + <legend> 群組相關欄位。required、aria-required="true"。autocomplete 屬性提示瀏覽器自動填入類型 (on/off/username/current-password 等)。紮實掌握 <form> 架構與屬性,能避免資料遺失、安全性漏洞與相容性問題,打造專業級表單體驗。