<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 表單標簽 表單(form)是用戶輸入信息與網頁互動的一種形式。大多數情況下,用戶提交的信息會發給服務器,比如網站的搜索欄就是表單。 表單由一種或多種的小部件組成,比如輸入框、按鈕、單選框或復選框。這些小部件稱為控件(controls)。 ## `<form>` ### 簡介 `<form>`標簽用來定義一個表單,所有表單內容放到這個容器元素之中。 ```html <form> <!-- 各種表單控件--> </form> ``` 上面代碼就是表單的基本形式。 下面是一個比較常見的例子。 ```html <form action="https://example.com/api" method="post"> <label for="POST-name">用戶名:</label> <input id="POST-name" type="text" name="user"> <input type="submit" value="提交"> </form> ``` 上面代碼就是一個表單,一共包含三個控件:一個`<label>`標簽,一個文本輸入框,一個提交按鈕。其中,文本輸入框的`name`屬性是`user`,表示將向服務器發送一個鍵名為`user`的鍵值對,鍵值就是這個控件的`value`屬性,等于用戶輸入的值。 用戶在文本輸入框里面,輸入用戶名,比如`foobar`,然后點擊提交按鈕,瀏覽器就會向服務器`https://example.com/api`發送一個 POST 請求,發送`user=foobar`這樣一段數據。 `<form>`有以下屬性。 - `accept-charset`:服務器接受的字符編碼列表,使用空格分隔,默認與網頁編碼相同。 - `action`:服務器接收數據的 URL。 - `autocomplete`:如果用戶沒有填寫某個控件,瀏覽器是否可以自動填寫該值。它的可能取值分別為`off`(不自動填寫)和`on`(自動填寫)。 - `method`:提交數據的 HTTP 方法,可能的值有`post`(表單數據作為 HTTP 數據體發送),`get`(表單數據作為 URL 的查詢字符串發送),`dialog`(表單位于`<dialog>`內部使用)。 - `enctype`:當`method`屬性等于`post`時,該屬性指定提交給服務器的 MIME 類型。可能的值為`application/x-www-form-urlencoded`(默認值),`multipart/form-data`(文件上傳的情況),`text/plain`。 - `name`:表單的名稱,應該在網頁中是唯一的。注意,如果一個控件沒有設置`name`屬性,那么這個控件的值就不會作為鍵值對,向服務器發送。 - `novalidate`:布爾屬性,表單提交時是否取消驗證。 - `target`:在哪個窗口展示服務器返回的數據,可能的值有`_self`(當前窗口),`_blank`(新建窗口),`_parent`(父窗口),`_top`(頂層窗口),`<iframe>`標簽的`name`屬性(即表單返回結果展示在`<iframe>`窗口)。 ### enctype 屬性 `<form>`表單的`enctype`屬性,指定了采用 POST 方法提交數據時,瀏覽器給出的數據的 MIME 類型。該屬性可以取以下值。 (1)`application/x-www-form-urlencoded` `application/x-www-form-urlencoded`是默認類型,控件名和控件值都要轉義(空格轉為`+`號,非數字和非字母轉為`%HH`的形式,換行轉為CR LF),控件名和控件值之間用`=`分隔。控件按照出現順序排列,控件之間用`&`分隔。 (2)`multipart/form-data` `multipart/form-data`主要用于文件上傳。這個類型上傳大文件時,會將文件分成多塊傳送,每一塊的 HTTP 頭信息都有`Content-Disposition`屬性,值為`form-data`,以及一個`name`屬性,值為控件名。 ```bash Content-Disposition: form-data; name="mycontrol" ``` 下面是上傳文件的表單。 ```html <form action="https://example.com/api" enctype="multipart/form-data" method="post"> 用戶名:<input type="text" name="submit-name"><br> 文件:<input type="file" name="files"><br> <input type="submit" value="上傳"> <input type="reset" value="清除"> </form> ``` 上面代碼中,輸入用戶名`Larry`,選中一個`file1.txt`文件,然后點擊“上傳”。瀏覽器發送的實際數據如下。 ```http Content-Type: multipart/form-data; boundary=--AaB03x --AaB03x Content-Disposition: form-data; name="submit-name" Larry --AaB03x Content-Disposition: form-data; name="files"; filename="file1.txt" Content-Type: text/plain ... contents of file1.txt ... --AaB03x-- ``` 上面代碼中,瀏覽器將這個表單發成多個數據塊。最上面使用`Content-Type`字段告訴服務器,數據格式是`multipart/form-data`(即多個數據塊),每個數據塊的分隔標志是`--AaB03x`。每個數據塊的第一行是`Content-Disposition`,其中的`name`字段表示這個數據塊的控件名,數據體則是該控件的數據值,比如第一個數據塊的`name`屬性是`submit-name`控件,數據體是該控件的值`Larry`。第二個數據塊是控件`files`,由于該控件是上傳文件,所以還要用`filename`屬性給出文件名`file1.txt`,數據體是`file1.txt`的內容。 ## `<fieldset>`,`<legend>` `<fieldset>`標簽是一個塊級容器標簽,表示控件的集合,用于將一組相關控件組合成一組。 ```html <form> <fieldset> <p>年齡:<input type="text" name="age"></p> <p>性別:<input type="text" name="gender"></p> </fieldset> </form> ``` 上面代碼中,兩個輸入框是一組,它們的外面會顯示一個方框。 `<fieldset>`有以下屬性。 - `disabled`:布爾屬性,一旦設置會使得`<fieldset>`內部包含的控件都不可用,都變成灰色狀態。 - `form`:指定控件組所屬的`<form>`,它的值等于`<form>`的`id`屬性。 - `name`:該控件組的名稱。 `<legend>`標簽用來設置`<fieldset>`控件組的標題,通常是`<fieldset>`內部的第一個元素,會嵌入顯示在控件組的上邊框里面。 ```html <fieldset> <legend>學生情況登記</legend> <p>年齡:<input type="text" name="age"></p> <p>性別:<input type="text" name="gender"></p> </fieldset> ``` 上面代碼中,這個控件組的標題會,嵌入顯示在`<fieldset>`的上邊框。 ## `<label>` `<label>`標簽是一個行內元素,提供控件的文字說明,幫助用戶理解控件的目的。 ```html <label for="user">用戶名:</label> <input type="text" name="user" id="user"> ``` 上面代碼中,輸入框前面會有文字說明“用戶名:”。 `<label>`的一大優勢是增加了控件的可用性。有些控件比較小(比如單選框),不容易點擊,那么點擊對應的`<label>`標簽,也能選中該控件。點擊`<label>`,就相當于控件本身的`click`事件。 `<label>`的`for`屬性關聯相對應的控件,它的值是對應控件的`id`屬性。所以,控件最好設置`id`屬性。 控件也可以放在`<label>`之中,這時不需要`for`屬性和`id`屬性。 ```html <label>用戶名: <input type="text" name="user"> </label> ``` `<label>`的屬性如下。 - `for`:關聯控件的`id`屬性。 - `form`:關聯表單的`id`屬性。設置了該屬性后,`<label>`可以放置在頁面的任何位置,否則只能放在`<form>`內部。 一個控件可以有多個關聯的`<label>`標簽。 ```html <label for="username">用戶名:</label> <input type="text" id="username" name="username"> <label for="username"><abbr title="required">*</abbr></label> ``` 上面代碼中,`<input>`有兩個關聯的`<label>`。 ## `<input>` ### 簡介 `<input>`標簽是一個行內元素,用來接收用戶的輸入。它是一個單獨使用的標簽,沒有結束標志。 它有多種類型,取決于`type`屬性的值,默認值是`text`,表示一個輸入框。 ```html <input> <!-- 等同于 --> <input type="text"> ``` 上面代碼會生成一個單行的輸入框,用戶可以在里面輸入文本。 `<input>`的屬性非常多,有些屬性是某個類型專用的,放在下文的“類型”部分介紹。這里介紹一些所有類型的共同屬性。 - `autofocus`:布爾屬性,是否在頁面加載時自動獲得焦點。 - `disabled`:布爾屬性,是否禁用該控件。一旦設置,該控件將變灰,用戶可以看到,但是無法操作。 - `form`:關聯表單的`id`屬性。設置了該屬性后,控件可以放置在頁面的任何位置,否則只能放在`<form>`內部。 - `list`:關聯的`<datalist>`的`id`屬性,設置該控件相關的數據列表,詳見后文。 - `name`:控件的名稱,主要用于向服務器提交數據時,控件鍵值對的鍵名。注意,只有設置了`name`屬性的控件,才會向服務器提交,不設置就不會提交。 - `readonly`:布爾屬性,是否為只讀。 - `required`:布爾屬性,是否為必填。 - `type`:控件類型,詳見下文。 - `value`:控件的值。 ### 類型 `type`屬性決定了`<input>`的形式。該屬性可以取以下值。 **(1)text** `type="text"`是普通的文本輸入框,用來輸入單行文本。如果用戶輸入換行符,換行符會自動從輸入中刪除。 ```html <input type="text" id="name" name="name" required minlength="4" maxlength="8" size="10"> ``` `text`輸入框有以下配套屬性。 - `maxlength`:可以輸入的最大字符數,值為一個非負整數。 - `minlength`:可以輸入的最小字符數,值為一個非負整數,且必須小于`maxlength`。 - `pattern`:用戶輸入必須匹配的正則表達式,比如要求用戶輸入4個~8個英文字符,可以寫成`pattern="[a-z]{4,8}"`。如果用戶輸入不符合要求,瀏覽器會彈出提示,不會提交表單。 - `placeholder`:輸入字段為空時,用于提示的示例值。只要用戶沒有任何字符,該提示就會出現,否則會消失。 - `readonly`:布爾屬性,表示該輸入框是只讀的,用戶只能看,不能輸入。 - `size`:表示輸入框的顯示長度有多少個字符寬,它的值是一個正整數,默認等于20。超過這個數字的字符,必須移動光標才能看到。 - `spellcheck`:是否對用戶輸入啟用拼寫檢查,可能的值為`true`或`false`。 **(2)search** `type="search"`是一個用于搜索的文本輸入框,基本等同于`type="text"`。某些瀏覽器會在輸入的時候,在輸入框的尾部顯示一個刪除按鈕,點擊就會刪除所有輸入,讓用戶從頭開始輸入。 下面是一個例子。 ```html <form> <input type="search" id="mySearch" name="q" placeholder="輸入搜索詞……" required> <input type="submit" value="搜索"> </form> ``` **(3)button** `type="button"`是沒有默認行為的按鈕,通常腳本指定`click`事件的監聽函數來使用。 ```html <input type="button" value="點擊"> ``` 建議盡量不使用這個類型,而使用`<button>`標簽代替,一則語義更清晰,二則`<button>`標簽內部可以插入圖片或其他 HTML 代碼。 **(4)submit** `type="submit"`是表單的提交按鈕。用戶點擊這個按鈕,就會把表單提交給服務器。 ```html <input type="submit" value="提交"> ``` 如果不指定`value`屬性,瀏覽器會在提交按鈕上顯示默認的文字,通常是`Submit`。 該類型有以下配套屬性,用來覆蓋`<form>`標簽的相應設置。 - `formaction`:提交表單數據的服務器 URL。 - `formenctype`:表單數據的編碼類型。 - `formmethod`:提交表單使用的 HTTP 方法(`get`或`post`)。 - `formnovalidate`:一個布爾值,表示數據提交給服務器之前,是否要忽略表單驗證。 - `formtarget`:收到服務器返回的數據后,在哪一個窗口顯示。 **(5)image** `type="image"`表示將一個圖像文件作為提交按鈕,行為和用法與`type="submit"`完全一致。 ```html <input type="image" alt="登陸" src="login-button.png"> ``` 上面代碼中,圖像文件是一個可以點擊的按鈕,點擊后會提交數據到服務器。 該類型有以下配套屬性。 - `alt`:圖像無法加載時顯示的替代字符串。 - `src`:加載的圖像 URL。 - `height`:圖像的顯示高度,單位為像素。 - `width`:圖像的顯示寬度,單位為像素。 - `formaction`:提交表單數據的服務器 URL。 - `formenctype`:表單數據的編碼類型。 - `formmethod`:提交表單使用的 HTTP 方法(`get`或`post`)。 - `formnovalidate`:一個布爾值,表示數據提交給服務器之前,是否要忽略表單驗證。 - `formtarget`:收到服務器返回的數據后,在哪一個窗口顯示。 用戶點擊圖像按鈕提交時,會額外提交兩個參數`x`和`y`到服務器,表示鼠標的點擊位置,比如`x=52&y=55`。`x`是橫坐標,`y`是縱坐標,都以圖像左上角作為原點`(0, 0)`。如果圖像按鈕設置了`name`屬性,比如`name="position"`,那么將以該值作為坐標的前綴,比如`position.x=52&position.y=55`。這個功能通常用來地圖類型的操作,讓服務器知道用戶點擊了地圖的哪個部分。 **(6)reset** `type="reset"`是一個重置按鈕,用戶點擊以后,所有表格控件重置為初始值。 ```html <input type="reset" value="重置"> ``` 如果不設置`value`屬性,瀏覽器會在按鈕上面加上默認文字,通常是`Reset`。 這個控件用處不大,用戶點錯了還會使得所有已經輸入的值都被重置,建議不要使用。 **(7)checkbox** `type="checkbox"`是復選框,允許選擇或取消選擇該選項。 ```html <input type="checkbox" id="agreement" name="agreement" checked> <label for="agreement">是否同意</label> ``` 上面代碼會在文字前面,顯示一個可以點擊的選擇框,點擊可以選中,再次點擊可以取消。上面代碼中,`checked`屬性表示默認選中。 `value`屬性的默認值是`on`。也就是說,如果沒有設置`value`屬性,以上例來說,選中復選框時,會提交`agreement=on`。如果沒有選中,提交時不會有該項。 多個相關的復選框,可以放在`<fieldset>`里面。 ```html <fieldset> <legend>你的興趣</legend> <div> <input type="checkbox" id="coding" name="interest" value="coding"> <label for="coding">編碼</label> </div> <div> <input type="checkbox" id="music" name="interest" value="music"> <label for="music">音樂</label> </div> </fieldset> ``` 上面代碼中,如果用戶同時選中兩個復選框,提交的時候就會有兩個`name`屬性,比如`interest=coding&interest=music`。 **(8)radio** `type="radio"`是單選框,表示一組選擇之中,只能選中一項。單選框通常為一個小圓圈,選中時會被填充或突出顯示。 ```html <fieldset> <legend>性別</legend> <div> <input type="radio" id="male" name="gender" value="male"> <label for="male">男</label> </div> <div> <input type="radio" id="female" name="gender" value="female"> <label for="female">女</label> </div> </fieldset> ``` 上面代碼中,性別只能在兩個選項之中,選擇一項。 注意,多個單選框的`name`屬性的值,應該都是一致的。提交到服務器的就是選中的那個值。 該類型的配套屬性如下。 - `checked`:布爾屬性,表示是否默認選中當前項。 - `value`:用戶選中該項時,提交到服務器的值,默認為`on'`。 **(9)email** `type="email"`是一個只能輸入電子郵箱的文本輸入框。表單提交之前,瀏覽器會自動驗證是否符合電子郵箱的格式,如果不符合就會顯示提示,無法提交到服務器。 ```html <input type="email" pattern=".+@foobar.com" size="30" required> ``` 上面代碼會生成一個必填的文本框,只能輸入后綴為`foobar.com`的郵箱地址。 該類型有一個`multiple`的布爾屬性,一旦設置,就表示該輸入框可以輸入多個逗號分隔的電子郵箱。 ```html <input id="emailAddress" type="email" multiple required> ``` 注意,如果同時設置了`multiple`屬性和`required`屬性,零個電子郵箱是允許的,也就是該輸入框允許為空。 該類型的配套屬性如下。 - `maxlength`:可以輸入的最大字符數。 - `minlength`:可以輸入的最少字符數。 - `multiple`:布爾屬性,是否允許輸入多個以逗號分隔的電子郵箱。 - `pattern`:輸入必須匹配的正則表達式。 - `placeholder`:輸入為空時的顯示文本。 - `readonly`:布爾屬性,該輸入框是否只讀。 - `size`:一個非負整數,表示輸入框的顯示長度為多少個字符。 - `spellcheck`:是否對輸入內容啟用拼寫檢查,可能的值為`true`或`false`。 該類型還可以搭配`<datalist>`標簽,提供輸入的備選項。 ```html <input type="email" size="40" list="defaultEmails"> <datalist id="defaultEmails"> <option value="jbond007@mi6.defence.gov.uk"> <option value="jbourne@unknown.net"> <option value="nfury@shield.org"> <option value="tony@starkindustries.com"> <option value="hulk@grrrrrrrr.arg"> </datalist> ``` 上面代碼中,輸入焦點進入輸入框以后,會顯示一個下拉列表,里面有五個參考項,供用戶參考。 **(10)password** `type="password"`是一個密碼輸入框。用戶的輸入會被遮擋,字符通常顯示星號(`*`)或點(`·`)。 ```html <input type="password" id="pass" name="password" minlength="8" required> ``` 瀏覽器對該類型輸入框的顯示,會有所差異。一種常見的處理方法是,用戶每輸入一個字符,先在輸入框里面顯示一秒鐘,然后再遮擋該字符。 如果用戶輸入內容包含換行符(`U+000A`)和回車符(`U+000D`),瀏覽器會自動將這兩個字符過濾掉。 該類型的配套屬性如下。 - `maxlength`:可以輸入的最大字符數。 - `minlength`:可以輸入的最少字符數。 - `pattern`:輸入必須匹配的正則表達式。 - `placeholder`:輸入為空時的顯示文本。 - `readonly`:布爾屬性,該輸入框是否只讀。 - `size`:一個非負整數,表示輸入框的顯示長度為多少個字符。 - `autocomplete`:是否允許自動填充,可能的值有`on`(允許自動填充)、`off`(不允許自動填充)、`current-password`(填入當前網站保存的密碼)、`new-password`(自動生成一個隨機密碼)。 - `inputmode`:允許用戶輸入的數據類型,可能的值有`none`(不使用系統輸入法)、`text`(標準文本輸入)、`decimal`(數字,包含小數)、`numeric`(數字0-9)等。 **(11)file** `type="file"`是一個文件選擇框,允許用戶選擇一個或多個文件,常用于文件上傳功能。 ```html <input type="file" id="avatar" name="avatar" accept="image/png, image/jpeg"> ``` 該類型有以下屬性。 - `accept`:允許選擇的文件類型,使用逗號分隔,可以使用 MIME 類型(比如`image/jpeg`),也可以使用后綴名(比如`.doc`),還可以使用`audio/*`(任何音頻文件)、`video/*`(任何視頻文件)、`image/*`(任何圖像文件)等表示法。 - `capture`:用于捕獲圖像或視頻數據的源,可能的值有`user`(面向用戶的攝像頭或麥克風),`environment`(外接的攝像頭或麥克風)。 - `multiple`:布爾屬性,是否允許用戶選擇多個文件。 **(12)hidden** `type="hidden"`是一個不顯示在頁面的控件,用戶無法輸入它的值,主要用來向服務器傳遞一些隱藏信息。比如,CSRF 攻擊會偽造表單數據,那么使用這個控件,可以為每個表單生成一個獨一無二的隱藏編號,防止偽造表單提交。 ```html <input id="prodId" name="prodId" type="hidden" value="xm234jq"> ``` 上面這個控件,頁面上是看不見的。用戶提交表單的時候,瀏覽器會將`prodId=xm234jq`發給服務器。 **(13)number** `type="number"`是一個數字輸入框,只能輸入數字。瀏覽器通常會在輸入框的最右側,顯示一個可以點擊的上下箭頭,點擊向上箭頭,數字會遞增,點擊向下箭頭,數字會遞減。 ```html <input type="number" id="tentacles" name="tentacles" min="10" max="100"> ``` 上面代碼指定數字輸入框,最小可以輸入10,最大可以輸入100。 該類型可以接受任何數值,包括小數和整數。可以通過`step`屬性,限定只接受整數。 該類型有以下配套屬性。 - `max`:允許輸入的最大數值。 - `min`:允許輸入的最小數值。 - `placeholder`:用戶輸入為空時,顯示的示例值。 - `readonly`:布爾屬性,表示該控件是否為只讀。 - `step`:點擊向上和向下箭頭時,數值每次遞減的步長值。如果用戶輸入的值,不符合步長值的設定,瀏覽器會自動四舍五入到最近似的值。默認的步長值是`1`,如果初始的`value`屬性設為`1.5`,那么點擊向上箭頭得到`2.5`,點擊向下箭頭得到`0.5`。 **(14)range** `type="range"`是一個滑塊,用戶拖動滑塊,選擇給定范圍之中的一個數值。因為拖動產生的值是不精確的,如果需要精確數值,不建議使用這個控件。常見的例子是調節音量。 ```html <input type="range" id="start" name="volume" min="0" max="11"> ``` 上面代碼會產生一個最小值為`0`、最大值為`11`的滑塊區域。用戶拖動滑塊,選擇想要的音量。 該類型的配套屬性如下,用法與`type="number"`一致。 - `max`:允許的最大值,默認為100。 - `min`:允許的最小值,默認為0。 - `step`:步長值,默認為1。 `value`屬性的初始值就是滑塊的默認位置。如果沒有設置`value`屬性,滑塊默認就會停在最大值和最小值中間。如果`max`屬性、`min`屬性、`value`屬性都沒有設置,那么`value`屬性為50。 該類型與`<datalist>`標簽配合使用,可以在滑動區域產生刻度。 ```html <input type="range" list="tickmarks"> <datalist id="tickmarks"> <option value="0" label="0%"> <option value="10"> <option value="20"> <option value="30"> <option value="40"> <option value="50" label="50%"> <option value="60"> <option value="70"> <option value="80"> <option value="90"> <option value="100" label="100%"> </datalist> ``` 上面代碼會在0~100之間產生11個刻度。其中,`0%`、`50%`和`100%`三個位置會有文字提示,不過瀏覽器很可能不支持。 注意,瀏覽器生成的都是水平滑塊。如果想要生成垂直滑塊,可以使用 CSS 改變滑塊區域的方向。 **(15)url** `type="url"`是一個只能輸入網址的文本框。提交表單之前,瀏覽器會自動檢查網址格式是否正確,如果不正確,就會無法提交。 ```html <input type="url" name="url" id="url" placeholder="https://example.com" pattern="https://.*" size="30" required> ``` 上面代碼的`pattern`屬性指定輸入的網址只能使用 HTTPS 協議。 注意,該類型規定,不帶有協議的網址是無效的,比如`foo.com`是無效的,`http://foo.com`是有效的。 該類型的配套屬性如下。 - `maxlength`:允許的最大字符數。 - `minlength`:允許的最少字符串。 - `pattern`:輸入內容必須匹配的正則表達式。 - `placeholder`:輸入為空時顯示的示例文本。 - `readonly`:布爾屬性,表示該控件的內容是否只讀。 - `size`:一個非負整數,表示該輸入框顯示寬度為多少個字符。 - `spellcheck`:是否啟動拼寫檢查,可能的值為`true`(啟用)和`false`(不啟用)。 該類型與`<datalist>`標簽搭配使用,可以形成下拉列表供用戶選擇。隨著用戶不斷鍵入,會縮小顯示范圍,只顯示匹配的備選項。 ```html <input id="myURL" name="myURL" type="url" list="defaultURLs"> <datalist id="defaultURLs"> <option value="https://developer.mozilla.org/" label="MDN Web Docs"> <option value="http://www.google.com/" label="Google"> <option value="http://www.microsoft.com/" label="Microsoft"> <option value="https://www.mozilla.org/" label="Mozilla"> <option value="http://w3.org/" label="W3C"> </datalist> ``` 上面代碼中,`<option>`的`label`屬性表示文本標簽,顯示在備選下拉框的右側,網址顯示在左側。 **(16)tel** `type="tel"`是一個只能輸入電話號碼的輸入框。由于全世界的電話號碼格式都不相同,因此瀏覽器沒有默認的驗證模式,大多數時候需要自定義驗證。 ```html <input type="tel" id="phone" name="phone" pattern="[0-9]{3}-[0-9]{3}-[0-9]{4}" required> <small>Format: 123-456-7890</small> ``` 上面代碼定義了一個只能輸入10位電話號碼的輸入框。 該類型的配套屬性如下。 - `maxlength`:允許的最大字符數。 - `minlength`:允許的最少字符串。 - `pattern`:輸入內容必須匹配的正則表達式。 - `placeholder`:輸入為空時顯示的示例文本。 - `readonly`:布爾屬性,表示該控件的內容是否只讀。 - `size`:一個非負整數,表示該輸入框顯示寬度為多少個字符。 **(17)color** `type="color"`是一個選擇顏色的控件,它的值一律都是`#rrggbb`格式。 ```html <input type="color" id="background" name="background" value="#e66465"> ``` 上面代碼在 Chrome 瀏覽器中,會顯示一個`#e66465`的色塊。點擊色塊,就會出現一個拾色器,供用戶選擇顏色。 如果沒有指定`value`屬性的初始值,默認值為`#000000`(黑色)。 **(18)date** `type="date"`是一個只能輸入日期的輸入框,用戶可以輸入年月日,但是不能輸入時分秒。輸入格式是`YYYY-MM-DD`。 ```html <input type="date" id="start" name="start" value="2018-07-22" min="2018-01-01" max="2018-12-31"> ``` 上面代碼會顯示一個輸入框,默認日期是2018年7月22日。用戶點擊以后,會日期選擇器,供用戶選擇新的日期。 該類型有以下配套屬性。 - `max`:可以允許的最晚日期,格式為`yyyy-MM-dd`。 - `min`:可以允許的最早日期,格式為`yyyy-MM-dd`。 - `step`:步長值,一個數字,以天為單位。 **(19)time** `type="time"`是一個只能輸入時間的輸入框,可以輸入時分秒,不能輸入年月日。日期格式是24小時制的`hh:mm`,如果包括秒數,格式則是`hh:mm:ss`。日期選擇器的形式則隨瀏覽器不同而不同。 ```html <input type="time" id="appt" name="appt" min="9:00" max="18:00" required> <small>營業時間上午9點到下午6點</small> ``` 該類型有以下配套屬性。 - `max`:允許的最晚時間。 - `min`:允許的最早時間。 - `readonly`:布爾屬性,表示用戶是否不可以編輯時間。 - `step`:步長值,單位為秒。 ```html <input id="appt" type="time" name="appt" step="2"> ``` 上面代碼中,調節控件的話,時間每次改變的幅度是2秒鐘。 **(20)month** `type="month"`是一個只能輸入年份和月份的輸入框,格式為`YYYY-MM`。 ```html <input type="month" id="start" name="start" min="2018-03" value="2018-05"> ``` 該類型有以下配套屬性。 - `max`:允許的最晚時間,格式為`yyyy-MM`。 - `min`:允許的最早時間,格式為`yyyy-MM`。 - `readonly`:布爾屬性,表示用戶是否不可以編輯時間。 - `step`:步長值,單位為月。 **(21)week** `type="week"`是一個輸入一年中第幾周的輸入框。格式為`yyyy-Www`,比如`2018-W18`表示2018年第18周。 ```html <input type="week" name="week" id="camp-week" min="2018-W18" max="2018-W26" required> ``` 該類型有以下配套屬性。 - `max`:允許的最晚時間,格式為`yyyy-Www`。 - `min`:允許的最早時間,格式為`yyyy-Www`。 - `readonly`:布爾屬性,表示用戶是否不可以編輯時間。 - `step`:步長值,單位為周。 **(22)datetime-local** `type="datetime-local"`是一個時間輸入框,讓用戶輸入年月日和時分,格式為`yyyy-MM-ddThh:mm`。注意,該控件不支持秒。 ```html <input type="datetime-local" id="meeting-time" name="meeting-time" value="2018-06-12T19:30" min="2018-06-07T00:00" max="2018-06-14T00:00"> ``` 該類型有以下配套屬性。 - `max`:允許的最晚時間,格式為`yyyy-MM-ddThh:mm`。 - `min`:允許的最早時間,格式為`yyyy-MM-ddThh:mm`。 - `step`:步長值,單位為秒,默認值是60。 ## `<button>` `<button>`標簽會生成一個可以點擊的按鈕,沒有默認行為,通常需要用`type`屬性或腳本指定按鈕的功能。 ```html <button>點擊</button> ``` 上面代碼會產生一個按鈕,上面的文字就是“點擊”。 `<button>`內部不僅放置文字,還可以放置圖像,這可以形成圖像按鈕。 ```html <button name="search" type="submit"> <img src="search.gif">搜索 </button> ``` `<button>`具有以下屬性。 - `autofocus`:布爾屬性,表示網頁加載時,焦點就在這個按鈕。網頁里面只能有一個元素,具有這個屬性。 - `disabled`:布爾屬性,表示按鈕不可用,會導致按鈕變灰,不可點擊。 - `name`:按鈕的名稱(與`value`屬性配合使用),將以`name=value`的形式,隨表單一起提交到服務器。 - `value`:按鈕的值(與`name`屬性配合使用),將以`name=value`的形式,隨表單一起提交到服務器。 - `type`:按鈕的類型,可能的值有三種:`submit`(點擊后將數據提交給服務器),`reset`(將所有控件的值重置為初始值),`button`(沒有默認行為,由腳本指定按鈕的行為)。 - `form`:指定按鈕關聯的`<form>`表單,值為`<form>`的`id`屬性。如果省略該屬性,默認關聯按鈕所在父表單。 - `formaction`:數據提交到服務器的目標 URL,會覆蓋`<form>`元素的`action`屬性。 - `formenctype`:數據提交到服務器的編碼方式,會覆蓋`<form>`元素的`enctype`屬性。可能的值有三種:`application/x-www-form-urlencoded`(默認值),`multipart/form-data`(只用于文件上傳),`text/plain`。 - `formmethod`:數據提交到服務器使用的 HTTP 方法,會覆蓋`<form>`元素的`method`屬性,可能的值為`post`或`get`。 - `formnovalidate`:布爾屬性,數據提交到服務器時關閉本地驗證,會覆蓋`<form>`元素的`novalidate`屬性。 - `formtarget`:數據提交到服務器后,展示服務器返回數據的窗口,會覆蓋`<form>`元素的`target`屬性。可能的值有`_self`(當前窗口),`_blank`(新的空窗口)、`_parent`(父窗口)、`_top`(頂層窗口)。 ## `<select>` `<select>`標簽用于生成一個下拉菜單。 ```html <label for="pet-select">寵物:</label> <select id="pet-select" name="pet-select"> <option value="">--請選擇一項--</option> <option value="dog">狗</option> <option value="cat">貓</option> <option value="others">其他</option> </select> ``` 上面代碼中,`<select>`生成一個下拉菜單,菜單標題是“--請選擇一項--”,最右側有一個下拉箭頭。點擊下拉箭頭,會顯示三個菜單項,供用戶點擊選擇。 下拉菜單的菜單項由`<option>`標簽給出,每個`<option>`代表可以選擇的一個值。選中的`<option>`的`value`屬性,就是`<select>`控件發送的服務器的值。 `<option>`有一個布爾屬性`selected`,一旦設置,就表示該項是默認選中的菜單項。 ```html <select name="choice"> <option value="first">First Value</option> <option value="second" selected>Second Value</option> <option value="third">Third Value</option> </select> ``` 上面代碼中,第二項`Second Value`是默認選中的。頁面加載的時候,會直接顯示在下拉菜單上。 `<select>`有如下屬性。 - `autofocus`:布爾屬性,頁面加載時是否自動獲得焦點。 - `disabled`:布爾屬性,是否禁用當前控件。 - `form`:關聯表單的`id`屬性。 - `multiple`:布爾屬性,是否可以選擇多個菜單項。默認情況下,只能選擇一項。一旦設置,多數瀏覽器會顯示一個滾動列表框。用戶可能需要按住`Shift`或其他功能鍵,選中多項。 - `name`:控件名。 - `required`:布爾屬性,是否為必填控件。 - `size`:設置了`multiple`屬性時,頁面顯示時一次可見的行數,其他行需要滾動查看。 ## `<option>`,`<optgroup>` `<option>`標簽用在`<select>`、`<optgroup>`、`<datalist>`里面,表示一個菜單項,參見`<select>`的示例。 它有如下屬性。 - `disabled`:布爾屬性,是否禁用該項。 - `label`:該項的說明。如果省略,則等于該項的文本內容。 - `selected`:布爾屬性,是否為默認值。顯然,一組菜單中,只能有一個菜單項設置該屬性。 - `value`:該項提交到服務器的值。如果省略,則等于該項的文本內容。 `<optgroup>`表示菜單項的分組,通常用在`<select>`內部。 ```html <label>寵物: <select name="pets" multiple size="4"> <optgroup label="四條腿的寵物"> <option value="dog">狗</option> <option value="cat">貓</option> </optgroup> <optgroup label="鳥類"> <option value="parrot">鸚鵡</option> <option value="thrush">畫眉</option> </optgroup> </select> </label> ``` 上面代碼中,`<select>`是一個下拉菜單,它的內部使用`<optgroup>`將菜單項分成兩組。每組有自己的標題,會加粗顯示,但是用戶無法選中。 它的屬性如下。 - `disabled`:布爾設置,是否禁用該組。一旦設置,該組所有的菜單項都不可選。 - `label`:菜單項的標題。 ## `<datalist>` `<datalist>`標簽是一個容器標簽,用于為指定控件提供一組相關數據,通常用于生成輸入提示。它的內部使用`<option>`,生成每個菜單項。 ```html <label for="ice-cream-choice">冰淇淋:</label> <input type="text" list="ice-cream-flavors" id="ice-cream-choice" name="ice-cream-choice"> <datalist id="ice-cream-flavors"> <option value="巧克力"> <option value="椰子"> <option value="薄荷"> <option value="草莓"> <option value="香草"> </datalist> ``` 上面代碼中,`<input>`生成一個文本輸入框,用戶可以輸入文本。`<input>`的`list`屬性指定關聯的`<datalist>`的`id`屬性。`<datalist>`的數據列表用于輸入建議,用戶點擊輸入框的時候,會顯示一個下拉菜單,里面是建議的輸入項。并且還會自動匹配用戶已經輸入的字符,縮小可選的范圍,比如用戶輸入“香”,則只會顯示“香草”這一項。 注意,`<option>`在這里可以不需要閉合標簽。 `<option>`標簽還可以加入`label`屬性,作為說明文字。Chrome 瀏覽器會將其顯示在`value`的下一行。 ```html <datalist id="ide"> <option value="Brackets" label="by Adobe"> <option value="Coda" label="by Panic"> </datalist> ``` 上面代碼的渲染結果是,Chrome 瀏覽器會在下拉列表顯示`value`值(比如`Brackets`),然后在其下方以小字顯示`label`值(比如`by Adobe`)。 ## `<textarea>` `<textarea>`是一個塊級元素,用來生成多行的文本框。 ```html <textarea id="story" name="story" rows="5" cols="33"> 這是一個很長的故事。 </textarea> ``` 上面代碼會生成一個長度為5行,寬度為33個字符的文本框。 該標簽有如下屬性。 - `autofocus`:布爾屬性,是否自動獲得焦點。 - `cols`:文本框的寬度,單位為字符,默認值為20。 - `disabled`:布爾屬性,是否禁用該控件。 - `form`:關聯表單的`id`屬性。 - `maxlength`:允許輸入的最大字符數。如果未指定此值,用戶可以輸入無限數量的字符。 - `minlength`:允許輸入的最小字符數。 - `name`:控件的名稱。 - `placeholder`:輸入為空時顯示的提示文本。 - `readonly`:布爾屬性,控件是否為只讀。 - `required`:布爾屬性,控件是否為必填。 - `rows`:文本框的高度,單位為行。 - `spellcheck`:是否打開瀏覽器的拼寫檢查。可能的值有`true`(打開),`default`(由父元素或網頁設置決定),`false`(關閉)。 - `wrap`:輸入的文本是否自動換行。可能的值有`hard`(瀏覽器自動插入換行符`CR + LF`,使得每行不超過控件的寬度),`soft`(輸入內容超過寬度時自動換行,但不會加入新的換行符,并且瀏覽器保證所有換行符都是`CR + LR`,這是默認值),`off`(關閉自動換行,單行長度超過寬度時,會出現水平滾動條)。 ## `<output>` `<output>`標簽是一個行內元素,用于顯示用戶操作的結果。 ```html <input type="number" name="a" value="10"> + <input type="number" name="b" value="10"> = <output name="result">20</output> ``` 該標簽有如下屬性。 - `for`:關聯控件的`id`屬性,表示為該控件的操作結果。 - `form`:關聯表單的`id`屬性。 - `name`:控件的名稱。 ## `<progress>` `<progress>`標簽是一個行內元素,表示任務的完成進度。瀏覽器通常會將顯示為進度條。 ```html <progress id="file" max="100" value="70"> 70% </progress> ``` 該標簽有如下屬性。 - `max`:進度條的最大值,應該是一個大于`0`的浮點數。默認值為1。 - `value`:進度條的當前值。它必須是`0`和`max`屬性之間的一個有效浮點數。如果省略了`max`屬性,該值則必須在`0`和`1`之間。如果省略了`value`屬性,則進度條會出現滾動,表明正在進行中,無法知道完成的進度。 ## `<meter>` `<meter>`標簽是一個行內元素,表示指示器,用來顯示已知范圍內的一個值,很適合用于任務的當前進度、磁盤已用空間、充電量等帶有比例性質的場合。瀏覽器通常會將其顯示為一個不會滾動的指示條。 ```html <p>烤箱的當前溫度是<meter min="200" max="500" value="350"> 350 度</meter>。</p> ``` 上面代碼會顯示一個指示條,左側表示`200`,右側表示`500`,當前位置停留在`350`。 注意,`<meter>`元素的子元素,正常情況下不會顯示。只有在瀏覽器不支持`<meter>`時才會顯示。 該標簽有如下屬性。 - `min`:范圍的下限,必須小于`max`屬性。如果省略,則默認為`0`。 - `max`:范圍的上限,必須大于`min`屬性。如果省略,則默認為`1`。 - `value`:當前值,必須在`min`屬性和`max`屬性之間。如果省略,則默認為`0`。 - `low`:表示“低端”的上限門檻值,必須大于`min`屬性,小于`high`屬性和`max`屬性。如果省略,則等于`min`屬性。 - `high`:表示“高端”的下限門檻值,必須小于`max`屬性,大于`low`屬性和`min`屬性。如果省略,則等于`max`屬性。 - `optimum`:指定最佳值,必須在`min`屬性和`max`屬性之間。它應該與`low`屬性和`high`屬性一起使用,表示最佳范圍。如果`optimum`小于`low`屬性,則表示“低端”是最佳范圍;如果大于`high`屬性,則表示“高端”是最佳范圍;如果在`low`和`high`之間,則表示“中間地帶”是最佳范圍。如果省略,則等于`min`和`max`的中間值。 - `form`:關聯表單的`id`屬性。 Chrome 瀏覽器使用三種顏色,表示指示條所處的位置。較好情況時,當前位置為綠色;一般情況時,當前位置為黃色;較差情況時,當前位置為紅色。 ```html <meter id="fuel" name="fuel" min="0" max="100" low="33" high="66" optimum="80" value="50"> at 50/100 </meter> ``` 上面代碼中,指示條可以分成三段:0 ~ 32,33 ~ 65,66 ~ 100。由于`optimum`屬性是`80`,因此`66 ~ 100`是較好情況,`33 ~ 65`是一般情況,`0 ~ 32`是較差情況。瀏覽器因此會根據`value`屬性,將當前位置顯示為不同顏色,小于`33`時顯示紅色,大于`65`時顯示綠色,兩者之間顯示黃色。 ## 參考鏈接 - [HTML Interactive Form Validation](https://webkit.org/blog/7099/html-interactive-form-validation/), by Chris Dumez
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看