深入理解 HTML 表單
html
表單
表單元素
從 HTML 到 HTML5, 表單相關的元素已經得到了很大的擴充, 基本上能夠滿足我們常見的需求。但在實際工作中, 因為互動或瀏覽器相容的需要, 有時候不得不對原生的表單元素進行擴充或模擬。但在此之前, 清楚的了解並掌握各種表單元素還是很重要的。在本文中, 我們將對表單元素 (預設是指 HTML5 表單元素)進行詳細的闡述。
form
●form 會自動處理submit 事件(submit 事件
●form 會自動處理submit 事件(submit 事件通常由校類驗,使用form.novalidate 可以關閉原生的validate●form 會根據每個表單元素的name 取得對應的使用者輸入, 然後將form data 以query string 的形式加入action 屬性對應的url 後面。預設的請求方法是 GET, 預設的action 是目前的 url。 ●event.target.elements 將會傳回所有可互動的元素<form novalidate> <input name='username' required/> <input name='passworkd' type='password' required/> <input name='email' type='email'/> <input type='submit' value='submit'/> </form>
登入後複製
可交互型elements
需要跟用戶進行交互,並獲得用戶輸入的這一類表單元素,我們把它們歸類為可交互型表單元素。 下面列舉出來了一些:●input: 常用的type 有checkbox, tel, number, email 等●textarea●select●option型資訊, 不需要跟使用者互動的表單元素,我們把它們歸類為回饋表單元素。 下面列舉出來了一些:
●meter
●output
<form oninput="result.value=parseInt(a.value)+parseInt(b.value)"> <input type='number' value='50' name='a' /> <input type='number' value='10' name='b' /> <output name='result'>60</output> </form>
登入後複製
對於output, 可以在form.oninput 設定計算出來的value
型群組的這一類表單元素, 我們把他們歸類為分組型表單元素。 下面列舉了一些:●fieldset
●optgroup<form> <select> <optgroup label='group1'> <option>1</option> <option>2</option> <option>3</option> </optgroup> <optgroup label='group2'> <option>4</option> <option>5</option> <option>6</option> </optgroup> <optgroup label='group3'> <option>7</option> <option>8</option> <option>9</optioin> </optgroup> </select> </form>
登入後複製
label
●opt 可與對應關聯了id 的交互個, 控制第一個●不建議嵌套label<form> <fieldset> <legend>Title</legend> <label for='radio'>Click me</label> <input type='radio' id='radio'/> </fieldset> </form>
登入後複製
<form> <fieldset> <legend>用户信息</legend> <label> 男 <input type='radio' name='gender' id='male' /> </label> <label> 女 <input type='radio' name='gender' id='female'/> </label> </fieldset> </form>
登入後複製
●對於複雜結構的name 可以使用keyPath如果對上面的程式碼不是很清楚的,參考qs field: {
name: String,
value: String || String[]
}
登入後複製
一個完整的實作
參考qs
一個完整的實作
參考qs
一個完整的實作參考qs
阻止事件●checkbox 需要拿checked 而不是value●select-multiple 需要存多個值●除了以上幾個特殊的交互元素之外, 其他的都默認從value 中去取值form. htmlconst fromKeyValues = { 'user.name': 'Tom', 'user.phone[0].number': '123456', 'user.phone[0].type': 'mobile' }; const fromValues = { user: { name: 'Tom', phone: [ { number: '123456', type: 'mobile' } ] } };
登入後複製
form.js
<form> <fieldset> <legend>Login</legend> <input name='username' placeholder='username' minlength='2'/> <input name='password' type='password' placeholder='password'/> <label> remember password <input name='checkbox' type='checkbox'/> </label> </fieldset> <fieldset> <p class="gender"> <legend>More Info</legend> <label> 男 <input name='gender' type='radio' value='male' /> </label> <label> 女 <input name='gender' type='radio' value='female' /> </label> </p> <select name='select' multiple> <option>1</option> <optgroup label='2'> <option>2.1</option> <option>2.2</option> </optgroup> </select> </fieldset> <button type='submit'>Submit</button></form>
登入後複製
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章
Windows 11 KB5054979中的新功能以及如何解決更新問題
3 週前
By DDD
如何修復KB5055523無法在Windows 11中安裝?
2 週前
By DDD
Inzoi:如何申請學校和大學
3 週前
By DDD
如何修復KB5055518無法在Windows 10中安裝?
2 週前
By DDD
Roblox:Dead Rails - 如何召喚和擊敗Nikola Tesla
4 週前
By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)