1. 程式人生 > 實用技巧 >HTML5 - 表單(八)

HTML5 - 表單(八)

HTML5 表單

HTML5 表單元素

HTML5有以下新的表單元素

  • <datalist>
  • <keygen>
  • <output>

HTML5 <datalist> 元素

  • <datalist>元素規定輸入域的選項列表
  • <datalist>元素規定 form 或 input 域應該擁有的自動完成功能

使用 <input> 元素的列表屬性與 <datalist> 元素繫結

<input list="browsers">
<datalist id="browsers">
    <option value="IE">
    <option valie="FireFox">
    <option value="Chrome">
    <option value="Opera">
    <option value="Safari">
</datalist>

HTML5 <keygen> 元素

  • <keygen>元素的作用是提供一種驗證使用者的可靠方法
  • <keygen>元素規定用於表單的金鑰對生成器欄位
  • 當提交表單時,會生成兩個鍵,一個是私鑰,一個是公鑰
  • 公鑰用於之後驗證客戶的客戶端證書(client certificate)

帶有 keygen 欄位的表單

<form action="demo_keygen.asp" method="get">
    使用者名稱:<input type="text" name="usr_name">
    加密:<keygen name="security">
    <input type="submit">
</form>

HTML5 <output> 元素

  • <output>元素用於不同型別的輸出,比如計算機或指令碼輸出
<form oninput="x.value=parseInt(a.value) + parseInt(b.value)">0
    <input type="range" id="a" value="50">100 + 
    <input type="number" id="b" value="50">=
    <output name="x" for="a b"></output>
</form>

HTML5 表單屬性

標籤 屬性 描述
form autocomplete 當用戶在自動完成域中開始輸入時,瀏覽器應該在該域中顯示填寫的選項
form novalidate 規定在提交表單時不應該驗證 form 或 input 域
標籤 屬性 描述
input autocomplete 當用戶在自動完成域中開始輸入時,瀏覽器應該在該域中顯示填寫的選項
input autofocus 規定在頁面載入時,域自動地獲得焦點
input form 規定輸入域所屬的一個或多個表單
input formaction 用於描述表單提交的URL地址
input formenctype 描述了表單提交到伺服器的資料編碼 (只對form表單中 method="post" 表單)
input formmethod 定義了表單提交的方式
input formnovalidate 描述了 <input> 元素在表單提交時無需被驗證
input formtarget 指定一個名稱或一個關鍵字來指明表單提交資料接收後的展示
input height height規定用於 image 型別的 <input> 標籤的影象高度
input width width 規定用於 image 型別的 <input> 標籤的影象寬度
input list 規定輸入域的 datalist
input min min、max 和 step 屬性用於為包含數字或日期的 input 型別規定限定(約束)
input max min、max 和 step 屬性用於為包含數字或日期的 input 型別規定限定(約束)
input multiple 規定<input> 元素中可選擇多個值
input pattern(regexp) 描述了一個正則表示式用於驗證 <input> 元素的值
input placeholder 提供一種提示(hint),描述輸入域所期待的值
input required 規定必須在提交之前填寫輸入域(不能為空)
input step 輸入域規定合法的數字間隔

<form>/<input> autocomplete 屬性

  • autocomplete 屬性規定 form 或 input 域應該擁有自動完成功能
  • 當用戶在自動完成域中開始輸入時,瀏覽器應該在該域中顯示填寫的選項
  • autocomplete 屬性有可能在 form元素中是開啟的,而在input元素中是關閉的
  • autocomplete 適用於
    標籤,以及以下型別的 標籤:text, search, url, telephone, email, password, datepickers, range 以及 color
<form action="demo_form.php" autocomplete="on">
    Name:<input type="text" name="name"><br />
    Gender:<input type="text" name="gender"><br />
    Age:<input type="text" name="age" autocomplete="off"><br />
    <input type="submit">
</form>

<form> novalidate 屬性

  • novalidate 屬性是一個 boolean(布林) 屬性
  • novalidate 屬性規定在提交表單時不應該驗證 form 或 input 域

不需要驗證提交的表單資料

<form action="demo_index.php" novalidate>
    Name:<input type="text" name="name"><br />
    Gender:<input type="text" name="gender"><br />
    Age:<input type="text" name="age" autocomplete="off"><br />
    <input type="submit">
</form>

<input> autofocus 屬性

  • autofocus 屬性是一個 boolean 屬性
  • autofocus 屬性規定在頁面載入時,域自動地獲得焦點

讓“Name” input 輸入域在頁面載入時自動聚焦

<form action="demo_index.php">
    Name:<input type="text" name="name" autofocus><br />
    Gender:<input type="text" name="gender"><br />
    Age:<input type="text" name="age"><br />
    <input type="submit">
</form>

<input> formaction 屬性

  • formaction 屬性用於描述表單提交的URL地址
  • formaction 屬性會覆蓋 元素中的action屬性
  • formaction 屬性用於 type="submit" 和 type="image"

以下表單包含了兩個不同地址的提交按鈕

<form action="demo-index.php">
    Name:<input type="text" name="name" autofocus><br />
    Gender:<input type="text" name="gender"><br />
    Age:<input type="text" name="age"><br />
    <input type="submit" value="提交">
    <input type="submit" formaction="demo_home.php"
  value="提交">
</form>

<input> formenctype 屬性

  • formenctype 屬性描述了表單提交到伺服器的資料編碼 (只對form表單中 method="post" 表單)
  • formenctype 屬性覆蓋 form 元素的 enctype 屬性
  • 該屬性與 type="submit" 和 type="image" 配合使用

第一個提交按鈕已預設編碼傳送表單資料,第二個提交按鈕以 "multipart/form-data" 編碼格式傳送表單資料:

<form action="demo-post_enctype.php" method="post">
  Name: <input type="text" name="name"><br>
  <input type="submit" value="提交">
  <input type="submit" formenctype="multipart/form-data"
  value="以 Multipart/form-data 提交">
</form>

<input> formmethod 屬性

  • formmethod 屬性定義了表單提交的方式
  • formmethod 屬性覆蓋了 <form> 元素的 method 屬性
  • 該屬性可以與 type="submit" 和 type="image" 配合使用

重新定義表單提交方式例項:

<form action="demo-form.php" method="get">
  Name: <input type="text" name="name"><br>
  Gender: <input type="text" name="gender"><br>
  <input type="submit" value="提交">
  <input type="submit" formmethod="post" formaction="demo-post.php"
  value="使用 POST 提交">
</form>

<input> formnovalidate 屬性

  • novalidate 屬性是一個 boolean 屬性
  • novalidate屬性描述了 <input> 元素在表單提交時無需被驗證
  • formnovalidate 屬性會覆蓋 <form> 元素的novalidate屬性
  • formnovalidate 屬性與type="submit一起使用

兩個提交按鈕的表單(使用與不適用驗證 ):

<form action="demo-form.php">
  E-mail: <input type="email" name="userid"><br>
  <input type="submit" value="提交"><br>
  <input type="submit" formnovalidate value="不驗證提交">
</form>

<input> formtarget 屬性

  • formtarget 屬性指定一個名稱或一個關鍵字來指明表單提交資料接收後的展示
  • formtarget 屬性覆蓋 <form>元素的target屬性
  • formtarget 屬性與type="submit" 和 type="image"配合使用

兩個提交按鈕的表單, 在不同視窗中顯示:

<form action="demo-form.php">
  Name: <input type="text" name="name"><br>
  Gender: <input type="text" name="gender"><br>
  <input type="submit" value="正常提交">
  <input type="submit" formtarget="_blank"
  value="提交到一個新的頁面上">
</form>

<input> height 和 width 屬性

  • height 和 width 屬性規定用於 image 型別的 <input> 標籤的影象高度和寬度
  • height 和 width 屬性只適用於 image 型別的<input> 標籤

定義了一個影象提交按鈕, 使用了 height 和 width 屬性:

<input type="image" src="demo_img.gif" alt="Submit" width="48" height="48">

<input> list 屬性

  • list 屬性規定輸入域的 datalist,datalist 是輸入域的選項列表
<input list="fruits">
<datalist id="fruits">
  <option value="Apple">
  <option value="Banana">
  <option value="Oringe">
  <option value="Lemon">
</datalist>

<input> min 和 max 屬性

  • min、max 和 step 屬性用於為包含數字或日期的 input 型別規定限定(約束)
  • min、max 和 step 屬性適用於以下型別的 <input> 標籤:date pickers、number 以及 range

<input> 元素最小值與最大值設定:

Enter a date before 1980-01-01:
<input type="date" name="bday" max="1979-12-31">

Enter a date after 2000-01-01:
<input type="date" name="bday" min="2000-01-02">

Quantity (between 1 and 5):
<input type="number" name="quantity" min="1" max="5">

<input> multiple 屬性

  • multiple 屬性是一個 boolean 屬性
  • multiple 屬性規定<input> 元素中可選擇多個值
  • multiple 屬性適用於以下型別的 <input> 標籤:email 和 file

上傳多個檔案:

選擇圖片: <input type="file" name="img" multiple>

<input> pattern 屬性

  • pattern 屬性描述了一個正則表示式用於驗證 <input> 元素的值
  • pattern 屬性適用於以下型別的 <input> 標籤: text, search, url, tel, email, 和 password

顯示了一個只能包含三個字母的文字域(不含數字及特殊字元):

Country code: <input type="text" name="country_code" pattern="[A-Za-z]{3}" title="Three letter country code">

<input> placeholder 屬性

  • placeholder 屬性提供一種提示(hint),描述輸入域所期待的值
  • 簡短的提示在使用者輸入值前會顯示在輸入域上
  • placeholder 屬性適用於以下型別的 <input> 標籤:text, search, url, telephone, email 以及 password

input 欄位提示文字:

<input type="text" name="name" placeholder="你的名字">

<input> required 屬性

  • required 屬性是一個 boolean 屬性
  • required 屬性規定必須在提交之前填寫輸入域(不能為空)
  • required 屬性適用於以下型別的 <input> 標籤:text, search, url, telephone, email, password, date pickers, number, checkbox, radio 以及 file

不能為空的input欄位:

Username: <input type="text" name="usrname" required>

<input> step屬性

  • step 屬性為輸入域規定合法的數字間隔:如果 step="3",則合法的數是 -3,0,3,6 等
  • step 屬性可以與 max 和 min 屬性建立一個區域值
  • step 屬性與以下type型別一起使用: number, range, date, datetime, datetime-local, month, time 和 week

規定input step步長為5:

<input type="number" name="points" step="5">