HTML基礎:Input 輸入框

HTML 基礎:Input 輸入框

簡介

上一篇:HTML 基礎:Form 表單,介紹了 HTML 中 <form> 元素的用法。接下來本篇將來詳細展開 <input> 輸入元素的所有類型以及用法。

參考

HTML input Tag-w3schoolshttps://www.w3schools.com/tags/tag_input.asp
input-MDNhttps://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/input

正文

Types 類型

首先我們先列出所有 input 可選的類型,主要可以分成五大類:

  • 輸入類型:基本上就是輸入文字,不過在不同設備會默認出現與 type 對應的鍵盤
  • 選擇類型:主要是寫好選項模板,在有限集合內選定單一或複數個值
  • 時間日期類型:選擇與日期或時間相關的值
  • 本地資源:需要讀取本地資源,如文件、圖片或其他任意類型的文件
  • 表單行為:表單的提交、點擊、重置等功能性的交互元素

Common Property 通用屬性

在開始介紹各種不同的 type 類型之前,我們先看看有哪些屬性是幾乎所有 input 都能共用的(無可選值則表示出現與否,如 <input name="password" required />):

AttrDescription可選值
autocomplete是否允許自動填充
autofocus表單加載時自動聚焦(focus)
disabled是否禁用
list自動填充選項<datalist> 的 id 值
name表示輸入框的名字,也就是表單的域(field)string
type標示輸入框類型string
value輸入框的值,寫在 html 則為初始值,隨用戶操作改變string
  • 注意!儘管輸入框有非常多種類型,但是不變的是所有 value 都是字符串(string) 的形式不變。

輸入類型

TypeDescription
text文本
email郵箱
number數字
password密碼
url網址
search搜索
tel電話
<textarea>多行文本

首先是輸入類型,不同 type 值的區別在於在移動端或是其他會出現默認鍵盤的時候會出現與 type 相對應的鍵盤類型,而 <textarea> 則表示多行文本輸入框,詳細用法這邊就不展開了

下面為使用範例:

  • index.html
<fieldset>
  <legend>輸入類型</legend>
  <label>文本:<input type="text" /></label>
  <label>郵箱:<input type="email" /></label>
  <label>數字:<input type="number" /></label>
  <label>密碼:<input type="password" /></label>
  <label>網址:<input type="url" /></label>
  <label>搜索:<input type="search" /></label>
  <label>電話:<input type="tel" /></label>
</fieldset>
  • web 下的樣式

  • 不同 type 在移動端上的鍵盤區別

Property 屬性

這邊再列出與輸入類型的 type 相關的 input 屬性,主要用途在於表單驗證時候使用:

AttrtypeDescription
minlengthpassword, search, tel, text, url輸入最小長度
maxlengthpassword, search, tel, text, url輸入最大長度
placeholderpassword, search, tel, text, url輸入提示
sizeemail, password, tel, text元素大小
patternpassword, text, tel有效內容正則表達式
minnumber最小值
maxnumber最大值

這邊就不上圖了,可以自己到 codepen 嘗試

選擇類型

TypeDescription
radio單選
checkbox多選
color顏色
range拉桿
<select>下拉選單

再來是選擇類型,分成單選、多選、顏色、拉桿、下拉選單等。

單選、多選通過設置多個 name 相同的 input 來實現。

下拉選單則透過 <select><input list> 來指定下拉單,並透過 <datalist><option> 來填充可選選項,使用範例如下:

<fieldset>
  <legend>選擇類型</legend>
  <label>
    單選 -
    <label>选项 1:<input type="radio" name="radio" value="1" /> </label>
    <label>选项 2:<input type="radio" name="radio" value="2" /> </label>
    <label>选项 3:<input type="radio" name="radio" value="3" /> </label>
  </label>

  <label>
    多選 -
    <label>选项 1:<input type="checkbox" name="checkbox" value="1" /> </label>
    <label>选项 2:<input type="checkbox" name="checkbox" value="2" /> </label>
    <label> 选项 3:<input type="checkbox" name="checkbox" value="3" /> </label>
  </label>

  <label>顏色:<input type="color" name="color" /></label>
  <label>拉桿:<input type="range" name="range" /></label>

  <input list="selectList" />
  <datalist id="selectList">
    <option value="1"></option>
    <option value="2"></option>
    <option value="3"></option>
  </datalist>

  <select>
    <!-- value 為選中時的值,a 為展示出來的值 -->
    <option value="1">a</option>
    <option value="2">b</option>
    <option value="3">c</option>
  </select>
</fieldset>

<select> 是在有限值內選擇,而 <input list> 則是提供可選選項也能自由填充內容

Property 屬性

AttrtypeDescription
valueradio, checkbox表示選中時代表的值
checkedradio, checkbox表示此元素是否選中

時間日期類型

TypeDescriptionvalu-format
date日期2020-06-18
datetime-local本地日期2020-06-18T00:00
month月份2020-06
week2020-W25
time時間00:00

接下來是與時間日期相關的輸入,默認都會有日期選擇框,範例如下:

<fieldset>
  <legend>日期時間相關</legend>
  <label>日期:<input type="date" /></label>
  <label>本地日期:<input type="datetime-local" /></label>
  <label>月份:<input type="month" /></label>
  <label>週:<input type="week" /></label>
  <label>時間:<input type="time" /></label>
</fieldset>

  • 不同類型的默認選擇樣式

本地資源

TypeDescription
file文件
<fieldset>
  <legend>本地資源</legend>
  <label>文件:<input type="file" /></label>
</fieldset>

Property 屬性

AttrDescription
accept接受的文件類型
capture捕獲資源的位置
files已選擇文件,value 無效
multiple是否接受多個文件

注意!在 type="file" 的情況下,讀取 value 是沒有意義的,需要使用如下來獲得文件列表:

const form = document.forms[formId]
const fileInput = form['file']
// files 為已選取的文件列表
console.log(fileInput.files)

表單行為和其他

TypeDescription
hidden隱藏
button按鈕
image帶圖樣的提交
submit提交
reset重置

最後是與表單行為相關的輸入類型,type="button"<button> 的結果是一模一樣的,直接看範例:

<fieldset>
  <legend>表單行為相關和其他</legend>
  <label>隱藏:<input type="hidden" /></label>
  <label>按鈕:<input type="button" value="button" /></label>
  <label>提交:<input type="submit" /></label>
  <label>帶圖標提交:<input type="image" /></label>
  <label>重置:<input type="reset" /></label>
</fieldset>

type="image" 時,src 表示圖標路徑,alt 表示替代文字,比較少使用,這邊就不展開說明了

Event 事件

對於這幾個元素來說屬性值本身並不是太重要,相對更重要的則是動作所觸發的事件:

Actions/EventDescription
click點擊行為
submit提交動作(點擊 type="submit" 元素)
reset重置動作(點擊 type="reset" 元素)

在 JS 使用時可以這樣綁定事件處理函數:

const form = document.forms[formId]
form.addEventListener('submit', function (e) {
  // 提交事件 ...
})
form.addEventListener('reset', function (e) {
  // 重置事件 ...
})

Event 常用監聽事件

有了 HTML 定義各樣的輸入框,這邊提出一些用戶輸入過程中可能觸發的事件,可用來綁定自定義處理函數:

EventActions
click點擊
focus聚焦
blur聚焦移除
change值改變
input輸入行為
submit表單提交
reset表單重置

後續將會為表單處理以及相關事件的觸發順序和應用等單獨說明

結語

本篇主要介紹 HTML 中有關 <input> 標籤的完整應用,透過指定不同的 type 可以有非常多種的輸入類型,豐富了原生 HTML 的人機交互能力。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值