HTML5權威指南筆記:12-表單

1 製作基本表單

製作一個基本的表單需要三個元素: form 、input和button元素

form元素表示HTML頁面上的表單

form元素
元素類型 流元素
允許具有的父元素 任何可以包含流元素的元素。但form元素不能是其他form元素的後代元素
局部屬性 action 、method 、enctype 、name 、accept-charset 、novalidate 、target和autocomplete
內容 流內容(但主要是label元素和input元素)
標籤用法 開始標籤和結束標籤
是否爲HTML5新增
在HTML5中的變化 novalidate和autocomplete屈性是HTML5中新增的
習慣樣式 form { display: block; margin-top: oem; }

input元素, 其用途是收集用戶輸入數據

input元素
元素類型 短語元素
允許具有的父元素 任何可以包含短語元素的元素
局部屬性 name 、disabled 、form、type , 以及取決於type屬性值的其他一些屬性
內容
標籤用法 虛元素形式
是否爲HTML5新增 否,但是增加了一些新的input元素類型, 它們由type屬性確定(詳見第13章)
在HTML5中的變化 在HTML5 中type屬性有一些新的值。此外還添加了一些新的屬性,它們需要與type屬性的特定值搭配使用
習慣樣式 無。這種元素的外觀取決於type屬性
button元素
元素類型 短語元素
允許具有的父元素 任何可以包含短語元素的元素
局部屬性 name 、disabled 、form 、type 、value 、autofocus , 以及取決千type屬性值的其他一些屬性
內容 短語內容
標籤用法 開始標籤和結束標籤
是否爲HTML5新增
在HTML5中的變化 新增了一些屬性,具體有哪些可用取決於type屬性值,詳見7節
習慣樣式

例子:

<!DOCTYPE HTML>
<html>
    <head>
    </head>
    <body>
        <form method="post" action="http://titan:8080/form">
            <input name="fave"/>
            <button>Submit Vote</button>
        </form>
    </body>
</html>

2 配置表單

屬性 說明
action 提交表單時瀏覽器應該把從用戶收集的數據發送到什麼地方 服務器網址,如果不設置form元素的action屬性, 那麼瀏覽器會將表單數據發到用以加載該HTML文檔的Url
method 指定了用來將表單數據發送到服務器的HTTP方法 get(默認)和post
enctype 指定瀏覽器對發送給服務器的數據採用的編碼方式 1、application/x-www-form-urlencoded:這是未設置enctype屬性時使用的默認編碼方式。它不能用來將文件上傳到服務器。
2、multipart/form-data:該編碼方式用於將文件上傳到服務器。
3、text/plain:該編碼方式因瀏覽器而異
autocomplete 自動填寫表單,input元素也有autocomplete屬性,會覆蓋表單的autocomplete屬性 on和off
target 指定表單反饋信息的目標顯示位置 _blank、_parent、_self、_top、frame
name 設置表單名稱,以便使用DOM,提交表單時其name屬性值不會被髮送給服務器,不設置name屬性,那麼用戶在其中輸入的數據在提交表單時不會被髮送給服務器 獨一無二的標識符

例子:

<!DOCTYPE HTML>
<html>
    <head>
    </head>
    <body>
        <form target="_blank" method="post" action="http://titan:8080/form" 
              enctype="application/x-www-form-urlencoded" autocomplete="off" name="fruitvote">
            <input autocomplete="on" name="fave"/>
            <input name="name"/>
            <button>Submit Vote</button>
        </form>
    </body>
</html>

3 在表單中添加說明標籤(label元素)

label元素
元素類型 短語元素
允許具有的父元素 任何可以包含短語元素的元素
局部屬性 for 、form
內容 短語內容
標籤用法 開始標籤和結束標籤
是否爲HTML5新增
在HTML5中的變化 form屬性是HTMLS中新增的,詳見8節
習慣樣式 label { cursor: default; }

例子:

<!DOCTYPE HTML>
<html>
    <head>
    </head>
    <body>
        <form method="post" action="http://titan:8080/form">
            <!--input元素設置了id屬性,並將相關label元素的for屬性設置爲這個id值。
            這樣做即可將input元素和label元素關聯起來,
            有助於屏幕閱讀器和其他殘障輔助技術對錶單的處理。-->
            <p><label for="fave">Fruit: <input id="fave" name="fave"/></label></p>
            <p><label for="name">Name: <input id="name" name="name"/></label></p>
            <button>Submit Vote</button>
        </form>
    </body>
</html>

4 自動聚焦到某個input 元素

autofocus屬性可以使表單顯示出來的時候即聚焦於某個input元素

<input autofocus id="fave" name="fave"/>

5 禁用單個input 元素

disabled屬性可以禁用input元素

<input disabled id="name" name="name"/>

6 對錶單元素編組(fieldset元素)

fieldset元素
元素類型 流元素
允許具有的父元素 任何可以包含流元素的元素, 通常是form元素的後代元素
局部屬性 name 、form 、disabled
內容 流內容。在開頭位置可以包含一個legend元素
標籤用法 開始標籤和結束標籤
是否爲HTML5新增
在HTML5中的變化 form屬性是HTML5中新增的, 詳見8節
習慣樣式 fieldset { display: block; margin-start: 2px;
margin-end: 2px; padding-before: 0.35em;
padding-start: 0.75em; padding-end : 0.75em;
padding-after: 9.625em; border: 2px groove; }

legend元素爲fieldset元素添加說明標籤

legend元素
元素類型
允許具有的父元素 fieldset元素
局部屬性
內容 短語內容
標籤用法 開始標籤和結束標籤
是否爲HTML5新增
在HTML5中的變化
習慣樣式 legend { display: block; padding-start: 2px;
padding-end: 2px; border: none; }

1. legend元素必須是fieldset元素的第一個子元素
2. 通過設置fieldset元素的disabled屬性,可以一次性地禁用多個input元素。

<!DOCTYPE HTML>
<html>
    <head>
    </head>
    <body>
        <form method="post" action="http://titan:8080/form">
            <!--使用fieldset進行分組-->
            <fieldset>
                <!--使用legend設置分組的說明標籤-->
                <legend>Enter Your Details</legend>
                <p><label for="name">Name: <input id="name" name="name"/></label></p>
                <p><label for="name">City: <input id="city" name="city"/></label></p>
            </fieldset>
            <!--添加disabled進行禁用-->
            <fieldset disabled>
                <legend>Vote For Your Three Favorite Fruits</legend>
                <p><label for="fave1">#1: <input id="fave1" name="fave1"/></label></p>
                <p><label for="fave2">#2: <input id="fave2" name="fave2"/></label></p>
                <p><label for="fave3">#3: <input id="fave3" name="fave3"/></label></p>
            </fieldset>
            <button>Submit Vote</button>
        </form>
    </body>
</html>

7 使用button 元素

button元素的type屬性的值

  1. submit:表示按鈕的用途是提交表單
  2. reset:表示按鈕的用途是重置表單
  3. button:表示按鈕沒有具體語義

7.1 用button元素提交表單

type屬性設置爲submit時button 元素的額外屬性

屬性 說明
form 指定按鈕關聯的表單,詳見8節
formaction 覆蓋form元素的action屬性,另行指定表單將要提交到的URL。關於action屬性, 詳見2.1節
fornmethod 覆蓋form元素的method屬性。關於method屬性,詳見2.2節
formenctype 覆蓋form元素的enctype屬性,另行指定表單的編碼方式。關於enctype屬性,詳見2.3節
formtarget 覆蓋form元素的target屬性。關於target屬性,詳見2.5節
formnovalidate 覆蓋form元素的novalidate屬性,表明是否應執行客戶端數據有效性檢查。關於對輸人數據的檢查,詳見第14章

例子:

<button type="submit"
        formaction="http://titan:8080/form"
        formmethod="post"
        formenctype="application/x-www-form-urlencoded"
        formtarget="_blank"
        formnovalidate="formnovalidate">
        Submit Vote
</button>

7.2 用button元素重置表單

將button元素的type屬性設置爲reset, 那麼按下按鈕會將表單中所有input元素重置爲初始狀態

<button type="reset">Reset</button>

7.3 把button作爲一般元素使用

將button元素的type屬性設置爲button, 那麼該button元素就僅僅是一個按鈕,但是可以在按下按鈕時可以用JavaScript執行一些操作。通過這種方法即可用button元素實現自定義的行爲。

<button type="button">Do NOT press this button</button>

8 使用表單外的元素

在HTML4中, input 、button和其他與表單相關的元素必須放在form元素中。在HTML5中,與表單相關的元素都定義了一個form屬性,將其form屬性設置爲相關form元素的id屬性值即關聯

<!DOCTYPE HTML>
<html>
    <head>
    </head>
    <body>
        <form id="voteform" method="post" action="http://titan:8080/form">
            <p>
                <label for="fave">Fruit: <input autofocus id="fave" name="fave"/></label>
            </p>
        </form>
        <p>
            <label for="name">Name: <input form="voteform" id="name" name="name"/>
            </label>
        </p>

        <button form="voteform" type="submit">Submit Vote</button>
        <button form="voteform" type="reset">Reset</button>
    </body>
</html>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章