HTML5權威指南筆記:14-其他表單元素及輸入驗證

1 使用其他表單元素

1.1 生成選項列表

select元素可以用來生成一個選項列表供用戶選擇,適合於選項較多的情形

select元素
元素類型 短語元素
允許具有的父元素 任何可以包含短語元素的元素
局部屬性 name 、disabled 、form 、size 、multiple 、autofocus和required
內容 option和optgroup元素
標籤用法 開始標籤和結束標籤
是否爲HTML5新增
在HTML5中的變化 form 、autofocus和required屬性是HTML5新增的
習慣樣式 無,該元素的外觀因平臺和瀏覽器而異

optgroup元素可以用來在select元素的內容中建立一定的結構。

optgroup元素
元素類型
允許具有的父元素 select元素
局部屬性 label 、disabled
內容 option元素
標籤用法 開始標籤和結束標籤
是否爲HTML5新增
在HTML5中的變化
習慣樣式

例子:

    <!--設置size屬性可讓select元素顯示多個選項,
    設置multiple屬性則可讓用戶一次選擇多個選項-->
    -->
    <select id="fave" name="fave" size="5" multiple>
        <!--optgroup元素的用途是對option元素進行編組
        label屬性可用來爲整組選項提供一個小標題。
        disabled屬性可用來阻止選擇組內的任何選項。-->
        <optgroup label="Top Choices">
            <!--提供給用戶的選項由option元素定義
            設置了selected屬性以便在頁面顯示出來時被自動選中-->
            <option value="apples" label="Apples">Apples</option>
            <option value="oranges" label="Oranges">Oranges</option>
        </optgroup>
        <optgroup label="Others">
            <option value="cherries" label="Cherries">Cherries</option>
            <option value="pears" label="Pears">Pears</option>
        </optgroup>
    </select>

1.2 輸入多行文字

textarea元素生成的是多行文本框,用戶可以在裏面輸入多行文字

textarea元素
元素類型 短語元素
允許具有的父元素 任何可以包含短語元素的元素,但通常是form元素
局部屬性 name 、disabled 、form 、readonly 、maxlength 、autofocus 、required 、placeholder 、dirname 、rows 、wrap和cols
內容 文本,也即該元素的內容
標籤用法 開始標籤和結束標籤
是否爲HTML5新增
在HTML5中的變化 form、autofocus 、required 、placeholder和wrap屬性HTML5新增的
習慣樣式

1. rows 和cols屬性可用來設置其大小
2. wrap屬性有兩個值: hard和soft, 可用來控制在用戶輸入的文字中插入換行符的方式
例子:

    <textarea cols="20" rows="5" wrap="hard" id="story"
              name="story">
        Tell us why this is your favorite fruit
    </textarea> 

1.3 表示計算結果

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

例子:

<!DOCTYPE HTML>
<html>
<head>
</head>
<body>
    <!--添加2個值相乘事件-->
    <form oninput="res.value = quant.valueAsNumber * price.valueAsNumber">
        <fieldset>
            <legend>Price Calculator</legend>
            <input type="number" placeholder="Quantity" id="quant" name="quant" /> x
            <input type="number" placeholder="Price" id="price" name="price" /> =
            <!--使用for屬性關聯2個input元素-->
            <output for="quant name" name="res" />
        </fieldset>
    </form>
</body>
</html>

1.4 生成公開/私有密鑰對

提交表單時,keygen元素會生成一對新的密鑰。公鑰被髮給服務器, 而私鑰則由瀏覽器保留並存入用戶的密鑰倉庫。

keygen元素
元素類型 短語元素
允許具有的父元素 任何可以包含短語元素的元素
局部屬性 challenge 、keytype 、autofocus 、name 、disabled和form
內容
標籤用法 虛元素形式
是否爲HTML5新增
在HTML5中的變化
習慣樣式

1. keytype屬性的用途是指定用來生成密鑰對的算法,不過它支持的值只有RSA一種
2. challenge屬性用來指定一條於公鑰一起發送給服務器的密鑰管理口令

2 使用輸入驗證

對輸入驗證的支持

驗證屬性 元素
required textarea 、select、input ( text 、password、checkbox 、radio 、file 、datetime 、datetime-local 、date 、month 、time 、week 、nunber , email 、url 、search及tel型)
min、max input ( datetime 、datetime- local 、date 、month 、time 、week 、number及range型)
pattern input ( text 、password 、email 、url 、search及tel型)

2.1 確保用戶提供了一個值

required屬性可以檢查用戶是否提供了一個值
例子:

<input type="text" required id="name" name="name"/>

2.2 確保輸入值位於某個範圍內

min和max屬性可以用來確保輸入的數值和日期數據處於指定的範圍內
例子:

<input type="number" min="0" max="100"
    value="1" id="price" name="price"/>

只有用戶輸入一個值後min和max屬性控制的輸入驗證纔會起作用 。設置該屬性的文本框空着的時候瀏覽器也允許用戶提交表單

2.3 確保輸入值與指定模式匹配

pattern屬性可以用來確保輸入值與一個正則表達式匹配
例子:

<input type="text" id="name" name="name" pattern="^.* .*$"/>

只有用戶輸入一個值後pattern屬性控制的輸入檢驗纔會起作用。設置該屬性的文本框空着的時候瀏覽器也允許用戶提交表單

3 禁用輸入驗證

要想不經輸入驗證就能提交表單,可以設置form元素的novalidate屬性,也可以設置用來提交表單的button或input元素的formnovalidate屬性。
例子:

  <form method="post" novalidate>
        <input type="submit" value="Save" formnovalidate />
    </form>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章