整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          詳細介紹創建 HTML 表單中常用的幾個表單標簽

          lt;form> 標簽用于為用戶輸入創建 HTML 表單。

          表單能夠包含 input 元素,比如文本字段、復選框、單選框、提交按鈕等等。

          表單還可以包含 menus、textarea、fieldset、legend 和 label 元素。

          表單用于向服務器傳輸數據。

          下面小編為大家介紹幾個常用的表單標簽。


          <datalist>標簽

          這個標簽規定了 <input> 元素可能的選項列表。

          一般會被用來在為<input> 元素提供"自動完成"的特性。用戶能看到一個下拉列表,里邊的選項是預先定義好的,將作為用戶的輸入數據。

          我們來演示一個案例,大家就知道怎么用了:

          上面這個小代碼,我們看得出,input標簽的list屬性值和datalist標簽的id是一樣的,沒錯,它們就是這樣來相互關聯起來的。當它們結合起來之后,不僅可以像select標簽一樣可以通過下拉來選擇已有的選項,還可以根據用戶輸入的字符,對選項進行匹配篩選。

          效果圖如下:

          有了datalist標簽,我們實現這種效果起來十分簡單,不需要任何的JavaScript代碼也能輕松實現。



          <output>標簽:

          標簽定義不同類型的輸出。比如腳本的輸出、一些加減乘除的運算結果,我們都可以使用這個標簽。

          我們來舉個例子:輸入的數字乘以2后得到的結果,我們用output輸出顯示。

          我們用oninput屬性監聽著表單的變化,并把得到的結果賦值到output標簽的value。我們來看看效果圖:



          其中,output標簽是可以離開form表單標簽的,但是,如果你這樣做的話,必須給output標簽添加form屬性,其屬性值是與其相關聯form表單的id。

          我們來將output移到form表單的外面試試:

          <form id="demo" oninput="b.value = parseInt(a.value)*2">
           <input type="number" name="a"> 乘以2=
          </form>
          <output form="demo" name="b" for="a"></output>
          

          跟上面的代碼有幾處不同之處,form標簽多了一個id,值為“demo”,output標簽被移到了form標簽外面,不再是form標簽的子節點,變成了兄弟節點(當然你可以把它移到文檔的其他位置)。output標簽還多了一個form屬性,此時,它的值正好是form標簽的id值:“demo”。這種寫法,代碼同樣是奏效的。



          <keygen>標簽

          這個標簽相信大家很少用到,但是也是為了學習,我們來了解一下就好。

          這個標簽規定用于表單的密鑰對生成器字段。當提交表單時,私鑰存儲在本地,公鑰發送到服務器,這種機制是專為使用基于Web的證書管理系統。

          我在MDN(Mozilla Developer Network)的網站上看到了關于它的一些介紹:

          There iscurrently discussion among Web browser makers whether to keep this feature ornot. Until a decision is reached, it is better to continue to consider thisfeature as deprecated and going away.

          大意是:目前各大瀏覽器廠商還在討論是否要保留它,在討論結束之前,你最好還是別用它。

          而另一段話則是更加直接明了:

          This featurehas been removed from the Web standards. Though some browsers may still supportit, it is in the process of being dropped. Do not use it in old or newprojects. Pages or Web apps using it may break at any time.

          大意是:雖然有些瀏覽器還支持它,但是這個特性已經被移除出web標準了,以后別使用它了。

          、良生- input type=file與文件上傳

          本文所說的input type=file指的是type類型是file的input元素,最簡HTML代碼如下:

          <input type=file>

          但是,為了習慣,我們多寫成:

          <input type="file">

          在HTML5出現之前(XHTML),我們的閉合規則則有些出入:

          <input type="file" />

          顧名思義,選擇文件,并上傳文件。

          在萬惡的舊時代,HTML5還沒有出現之前,原生的file input表單元素只能讓我們一次上傳一張圖片。無法滿足一次上傳多圖的交互需求,所以,很多場景,就被swfupload.js給取代了,有點逐漸淡出人們視野的感覺。

          然,技術發展,日新月異,三十年河東,三十年河西。隨著原生HTML5表單對多圖(multiple屬性)、上傳前預覽,二進制上傳等支持越來越廣泛,原生的file input表單元素又迎來了新的升級,flash為背景的swfupload.js注定要落寞。

          但是,對于PC項目,IE8-IE9瀏覽器還是不能忽略的。所以,現在,很流行的一種處理方式,就是HTML5 file上傳和flash swfupload上傳一起整合的模式,優先使用原生HTML5上傳,不支持的,使用flash上傳。我之前有篇關于HTML5上傳的文章,每天訪問量很高的:“基于HTML5的可預覽多圖片Ajax上傳”,大家有興趣可以看看。

          如果想使用瀏覽器原生特性實現文件上傳(如圖片)效果,父級的form元素有個東西不能丟,就是:

          enctype="multipart/form-data"

          enctype屬性規定在發送到服務器之前應該如何對表單數據進行編碼,默認的編碼是:”application/x-www-form-urlencoded“。對于普通數據是挺適用的,但是,對于文件,科科,就不能亂編碼了,該什么就是什么,只能使用multipart/form-data作為enctype屬性值。

          無論是舊時代的單圖上傳,還是HTML5中的多圖上傳,均是如此。

          文件,尤其圖片,上場前能夠預覽,是很棒的交互體驗。不走服務器,不耗費流量,多棒!

          理想雖好,實現起來……

          在HTML5還沒出現的舊時代,只有低版本的IE瀏覽器貌似有方法,使用私有的濾鏡,超越安全的限制(其實是利用了不好的東西),實現圖片直接預覽;但是呢,那個時候,Chrome, FireFox沒有這一出,于是,想要使用原生file input實現圖片的上傳前預覽,兼容性坎很難跨過去。

          但是,后來,HTML5來了,我們出現了轉機,IE10+以及其他現代瀏覽器,可以讓我們直接讀取圖片的數據,然后在頁面上呈現,實現了上傳前預覽;加上之前老IE的濾鏡策略,貌似,可行。但是呢但是,老的IE瀏覽器只能最多一次選擇一個文件,因此,只有單圖上傳的時候,大家可以考慮考慮。

          傳統的form提交,是要改變頁面流的,也就是刷新后跳轉。好的體驗應該是走Ajax交互的。HTML5里面支持二進制formData數據提交,因此,可以從容Ajax提交上傳的文件數據;那老舊的IE瀏覽器怎么辦?

          一般方法如下:

          <form action="" method="post" enctype="multipart/form-data" target="uploadIframe">< <iframe id="uploadIframe"></iframe>

          var doc = iframe.contentDocument ? iframe.contentDocument : frames[iframe.id].document; var response = doc.body && doc.body.innerHTML;

          OK, 當然,你也可以不用像上面這么麻煩,直接使用jquery.form.js. 原理呢,就是上面這樣,但是,不需要這么麻煩。

          原生的file input不收待見的另外一個原因是:長的丑還不好控制。

          舉個例子,下圖這個“選擇文件”這幾個文字,我們就不好對file控件動刀子實現自定義:

          file input框

          怎么辦呢?

          有一種方法是這樣的: 讓file類型的元素透明度0,覆蓋在我們好看的按鈕上。然后我們去點擊好看的按鈕,實際上點擊是是file元素。

          然而,此方法有一些不足:

          更好的方法是,使用label元素與file控件關聯,好處在于:

          <label class="ui_button ui_button_primary" for="xFile">上傳文件</label> <form><input type="file" id="xFile" style="position:absolute;clip:rect(0 0 0 0);"></form>

          效果如下(真實實時效果):

          input file類型控件有一個屬性,名為

          accept

          , 可能有些小伙伴不太了解。可以用來指定瀏覽器接受的文件類型,也就是的那個我們打開系統的選擇文件彈框的時候,默認界面中呈現的文件類型。例如:

          accept="image/jpeg"

          ,則界面中只有jpg圖片,如下截圖,同時,窗體右下方是“自定義文件”按鈕:

          自定義文件

          實際開發的時候,很少只允許傳jpg圖片,應該都是只能傳圖片類型,此時,可以使用:

          accept="image/*"

          于是乎,“自定義文件”按鈕變成了語義更明確的“圖片文件”:

          圖片文件

          accept屬性值其實是MIME類型, 例如下面幾個可能常用的:

          accept="application/pdf" accept="audio/x-mpeg" accept="text/html" .accept="video/x-mpeg2"

          然后,多個屬性值使用逗號分隔,例如:

          <input accept="audio/*,video/*,image/*">

          現代瀏覽器直接value = "", 有些IE瀏覽器貌似不行,好像使用file.outerHTML = file.outerHTML,我自己沒測試。

          不過我覺得比較麻煩,還要判斷瀏覽器什么的。像本文的Ajax單圖上傳,直接form.reset()就可以了。

          以上~

          本文為原創文章,會經常更新知識點以及修正一些錯誤,因此轉載請保留原出處,方便溯源,避免陳舊錯誤知識的誤導,同時有更好的閱讀體驗。

          單元素初識

          我們在瀏覽網頁時會經常遇到注冊會員的界面,大概像這個樣子:

          或填寫問卷的情況,大概像這個樣子:

          我們把這些內容稱之為表單。

          如何向自己的頁面中添加表單呢?

          添加表單的操作和添加表格類似。

          首先我們要在頁面中寫入<form></form>標簽,這是向瀏覽器聲明這里是個表單,它本身并不會顯示在頁面中,但是可以全局控制表單元素的一些屬性,就像表格中的<table></table>標簽。

          然后再在<form></form>中寫入<input/>標簽,這個標簽的內容就會顯示在頁面中了,就像表格元素中的<tr><td>標簽。不同的是<input/>沒有結尾標簽。

          下面讓我們寫一寫。

          首先復制"第一個頁面.html"文件。改名為"表單.html",然后清空<body></body>中的內容,將<head></head>中間的<title></title>中間的內容改為"表單",這樣方便我們查看測試頁面。

          示例代碼如下:

          <!DOCTYPE HTML>
            <html>
            <head> 
            <title>表單 </title>
            </head> 
            <body>
            </body>
            </html>

          下面我們要寫入表單內容,示例代碼如下:

          <form> <input/></form>

          頁面效果如下:

          只有一個輸入框。下面,我們為輸入框添加名稱"會員名稱:",示例代碼如下:

          <form> 會員名稱: <input/></form>

          效果如下:

          這樣我們就寫出了一個簡單的表單,如果為表單添加更多內容和設置,就要繼續了解表單的屬性。

          表單元素屬性1

          <input/>標簽通過改變type屬性可以變換出不同功能,在頁面制作中,我認為<input/>標簽中的type屬性最重要。

          下面我們來看一下type屬性不同的值。

          圖片來源W3School

          輸入文字:首先,先來看text值。說明很明確,這個屬性值的<input>標簽主要是用來輸入文本,比如"會員名稱。"

          示例代碼如下:

          <form> 會員名稱: <input type="text"/></form>

          頁面效果如圖所示:我胡亂輸入了幾個字母

          如果不指定type的text值的話,表面看起來并不影響輸入內容,但是表單的內容最終是要提交到服務器的,如果不注明type="text",服務器就不能判斷你輸入的字符到底是一段代碼還是一段字符串組成的文本,因此,我們為了讓提的交數據在服務器端能被準確識別,一定要寫好type的屬性。

          除此之外變換type值也能為<input/>變換不同功能。

          制作提交按鈕:例如"submit"(提交)。在我們輸入完表單內容后,一般都有一個提交按鈕,這個提交按鈕也是由<input/>標簽來完成的。

          示例代碼如下:

          <form> 會員名稱: <input type="text"/> <input type="submit"/></form>

          如圖所示:

          因為<input/>是內聯元素,所以"submit"按鈕會和之前的<input>顯示在一行,換行的話很簡單,可以使用<br>標簽。

          大家觀察一下發現,我們并沒有給"submit"按鈕指定文字,在按鈕上卻出現了"提交查詢"的字樣,這是html默認的,如果我們要改變按鈕文字就要使用value這個屬性。示例代碼如下:

          <input type="submit" value = "提交"/>

          頁面效果如下:

          其實我們在輸入文字時,輸入框里會經常有提示文字,當我們點擊輸入框時,提示文字消失了,這個功能怎么實現?

          這又涉及到一個新屬性,叫做"placeholder"(提示文字)。

          示例代碼如下:

          <input type="text" placeholder = "請輸入英文或漢語拼音"/>

          頁面效果如下:

          下面我們來練習一下,示例代碼如下:

          <form>
            會員名稱:
          <input type = "text" placeholder = "請輸入英文或漢語拼音"/><br>
            會員密碼:<input type = "text" placeholder = "請輸入英文字母、特殊符號、數字"/><br>
            確認密碼:<input type = "text" /><br><input type = "submit" value = "提交"/><br>
          </form>

          頁面效果如下:(想把密碼字符顯示為小圓點的讀者可以先去屬性值列表中找找"password"看看,咱們后面會細致講解)

          制作多選表單:多選表單的type屬性值是"checkbox"。

          我猜大家也猜到該怎么寫了,示例代碼如下:

          <form>
            興趣愛好:<br>
            <input type = "checkbox" name="hobby" value = "reading"/>讀書
            <input type = "checkbox" name="hobby" value = "film"/>電影
            <input type = "checkbox" name="hobby" value = "painting"/>繪畫
            <input type = "checkbox" name="hobby" value = "music"/>音樂
            <br>
            <input type = "submit" value = "submit"/>
            </form>

          頁面效果如下:

          大家可以點點試試,可以多選了。如圖:

          這時小伙伴們會發現在這組示例中,出現了name和value兩個屬性。

          先說value,在"submit"中,value的值也就是"提交"二字,是直接顯示在按鈕上的,而這里的value值卻沒有顯示,顯示出來的是我們在<input/>標簽后面輸入的"讀書、電影、繪畫、音樂"這樣的字樣。也就是說這里的value不會顯示為選框的名字!

          那value屬性是干嘛的呢?實際上"checkbox"屬性下的value屬性值是寫給后臺的服務器看的。

          我們向服務器提交選擇后,服務器把name的名稱作為數據的大類名稱,把value值作為大類中的子類名稱來存儲或分析數據。

          比如這個選擇表單是有關興趣愛好的,因此數據的大類屬于"愛好"(hobby),即name="hobby",hobby中又分為"reading"(讀書),"film"(電影),"painting"(繪畫),"music"(音樂),即value="reading"、value="film"等等。這樣不同用戶的不同選擇就按照這個數據組織方式提交給了服務器。

          大家明白了嗎?

          另外需要說明的是,name和value最好使用英文或拼音來書寫!

          雖然我們目前不涉及后端服務器上的操作,但是在學習時要養成規范書寫的習慣。

          其實,除了type="submit"的情況外,其他需要輸入信息的type屬性類型都是要寫name屬性的,不過不同type屬性類型的value卻不太一樣

          下面我們來看看type="text"時的標準寫法:當type="text"的時候,不必寫value屬性,因為value值為用戶輸入的內容

          <form>
            會員名稱:
            <input type = "text" placeholder = "請輸入英文或漢語拼音" name="memberName"/><br>
            會員密碼:
            <input type = "text" placeholder = "請輸入英文字母、特殊符號、數字" name="passWord"/><br>
            確認密碼:<input type = "text" name="confirmPassWord"/><br>
            <input type = "submit" value = "提交"/><br>
          </form>

          今天的內容先到這里,我們明天繼續講解"表單元素"。

          喜歡的小伙伴請關注和轉發,閱讀中遇到任何問題請給我留言,如有疏漏或錯誤歡迎大家斧正,不勝感激!

          HTML完整學習目錄

          HTML序章(學習目的、對象、基本概念)——零基礎自學網頁制作

          HTML是什么?——零基礎自學網頁制作

          第一個HTML頁面如何寫?——零基礎自學網頁制作

          HTML頁面中head標簽有啥用?——零基礎自學網頁制作

          初識meta標簽與SEO——零基礎自學網頁制作

          HTML中的元素使用方法1——零基礎自學網頁制作

          HTML中的元素使用方法2——零基礎自學網頁制作

          HTML元素中的屬性1——零基礎自學網頁制作

          HTML元素中的屬性2(路徑詳解)——零基礎自學網頁制作

          使用HTML添加表格1(基本元素)——零基礎自學網頁制作

          使用HTML添加表格2(表格頭部與腳部)——零基礎自學網頁制作

          使用HTML添加表格3(間距與顏色)——零基礎自學網頁制作

          使用HTML添加表格4(行顏色與表格嵌套)——零基礎自學網頁制作

          16進制顏色表示與RGB色彩模型——零基礎自學網頁制作

          HTML中的塊級元素與內聯元素——零基礎自學網頁制作

          初識HTML中的<div>塊元素——零基礎自學網頁制作

          在HTML頁面中嵌入其他頁面的方法——零基礎自學網頁制作

          封閉在家學網頁制作!為頁面嵌入PDF文件——零基礎自學網頁制作

          HTML表單元素初識1——零基礎自學網頁制作

          HTML表單元素初識2——零基礎自學網頁制作

          HTML表單3(下拉列表、多行文字輸入)——零基礎自學網頁制作

          HTML表單4(form的action、method屬性)——零基礎自學網頁制作

          HTML列表制作講解——零基礎自學網頁制作

          為HTML頁面添加視頻、音頻的方法——零基礎自學網頁制作

          音視頻格式轉換神器與html視頻元素加字幕——零基礎自學網頁制作

          HTML中使用<a>標簽實現文本內鏈接——零基礎自學網頁制作


          主站蜘蛛池模板: 国产精品毛片a∨一区二区三区| 日本一区高清视频| 亚洲AV无码一区二区二三区入口 | 国产成人精品视频一区| 熟女少妇丰满一区二区| 国产精品一区二区香蕉| 亚洲综合在线一区二区三区| 无码AV天堂一区二区三区| 中文字幕一区二区三区在线播放| 中文字幕日韩欧美一区二区三区| 中文人妻无码一区二区三区| 一区二区三区四区在线播放| 成人一区专区在线观看| 亚洲AV无码国产精品永久一区| 久久久久久人妻一区精品| 亚洲AV福利天堂一区二区三| 国产综合一区二区| 亚洲av无码一区二区三区不卡| 亚洲中文字幕无码一区二区三区 | 亚洲一区二区三区播放在线| 久久久久久人妻一区精品| 久久国产精品最新一区| 老熟妇仑乱视频一区二区| 国产经典一区二区三区蜜芽 | 国精产品一区一区三区免费视频 | 激情内射亚洲一区二区三区| 久久一区二区明星换脸| 亚洲综合无码一区二区| 91久久精品午夜一区二区| 精品不卡一区二区| 国模视频一区二区| 一区二区三区精品视频| 国产一区二区影院| 伦理一区二区三区| 无码人妻久久一区二区三区免费| 日韩精品一区二区三区中文| 欧美日韩精品一区二区在线视频 | 中文字幕在线播放一区| 亚洲AV综合色区无码一区爱AV| 精品国产乱子伦一区二区三区| 中文字幕精品一区二区2021年 |