整合營銷服務商

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

          免費咨詢熱線:

          HTML input type=file文件選擇表單元素二三事

          、良生- 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()就可以了。

          以上~

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

          TML 表單用于搜集不同類型的用戶輸入。HTML5 Input,擁有多個新的表單輸入類型,提供了更好的輸入控制和驗證,今天將為大家帶來HTML中的表單及其input輸入類型。

          一、HTML表單

          1、HTML表單用于收集不同類型的用戶輸入,是一個包含表單元素的區域并且允許用戶在表單中輸入內容,比如文本域(textarea)、下拉列表、單選框(radio=buttons)、復選框(checkboxes)等。

          2、表單使用標簽<form>來設置,示例:

          運行結果:

          二、HTML表單屬性:

          1、HTML表單包含表單元素,表單元素是指不同類型的input元素、復選框、單選按鈕、提交按鈕等。

          2、action屬性

          在上面的示例中出現了action屬性,action屬性定義在提交表單執行的動作,向服務器提交表單的通常做法是使用提交按鈕。

          通常,表單會被提交到web服務器上的網頁,上面的例子中,則指定了某個服務器腳本來處理被提交表單。

          如果省略 action 屬性,則 action 會被設置為當前頁面。

          3、method 屬性

          method屬性規定在提交表單時所用的 HTTP 方法(GET 或 POST):

          如果表單提交是被動的(比如搜索引擎查詢),并且沒有敏感信息,使用get。

          如果表單正在更新數據,或者包含敏感信息(例如密碼),使用post。

          4、如果要正確地被提交,每個輸入字段必須設置一個 name 屬性,示例:

          <!DOCTYPE html>

          <html>

          <body>

          <form action="/demo/demo_form.asp">

          First name:<br>

          <input type="text" name="Firstname" value="Mickey">

          <br>

          Last name:<br>

          <input type="text" name="lastname" value="Mouse">

          <br><br>

          <input type="submit" value="Submit">

          </form>

          <p>如果您點擊提交,表單數據會被發送到名為 demo_form.asp 的頁面。</p>

          <p>first name 不會被提交,因為此 input 元素沒有 name 屬性。</p>

          </body>

          </html>

          運行結果:

          5、target 屬性

          target 屬性規定提交表單后在何處顯示響應,target 屬性可設置以下值之一:

          默認值為 _self,這意味著響應將在當前窗口中打開。

          6、Autocomplete 屬性

          autocomplete 屬性規定表單是否應打開自動完成功能。

          啟用自動完成功能后,瀏覽器會根據用戶之前輸入的值自動填寫值,示例:

          運行結果:


          7、所有<form>屬性的列表:


          三、HTML表單元素:

          1、<input>元素是最重要的表單元素,有很多的形態,根據不同的type屬性,例如:

          ① 文本輸入(text),示例:

          <!DOCTYPE html>

          <html>

          <body>

          <form>

          First name:<br>

          <input type="text" name="firstname">

          <br>

          Last name:<br>

          <input type="text" name="lastname">

          </form>

          <p>請注意表單本身是不可見的。</p>

          <p>同時請注意文本字段的默認寬度是 20 個字符。</p>

          </body>

          </html>

          運行結果:

          ② 單選按鈕輸入(radio),示例:

          <!DOCTYPE html>

          <html>

          <body>

          <form>

          <input type="radio" name="sex" value="male" checked>Male

          <br>

          <input type="radio" name="sex" value="female">Female

          </form>

          </body>

          </html>

          運行結果:

          ③ 提交按鈕(submit),示例:

          <!DOCTYPE html>

          <html>

          <body>

          <form action="/demo/demo_form.asp">

          First name:<br>

          <input type="text" name="firstname" value="Mickey">

          <br>

          Last name:<br>

          <input type="text" name="lastname" value="Mouse">

          <br><br>

          <input type="submit" value="Submit">

          </form>

          <p>如果您點擊提交,表單數據會被發送到名為 demo_form.asp 的頁面。</p>

          </body>

          </html>

          運行結果:

          2、<select>元素

          <select>元素定義下拉列表,示例:

          <!DOCTYPE html>

          <html>

          <body>

          <form action="/demo/demo_form.asp">

          <select name="cars">

          <option value="volvo">Volvo</option>

          <option value="saab">Saab</option>

          <option value="fiat">Fiat</option>

          <option value="audi">Audi</option>

          </select>

          <br><br>

          <input type="submit">

          </form>

          </body>

          </html>

          運行結果:

          3、<fieldset>元素

          <fieldset>元素組合表單中的相關數據

          <legend>元素為<fieldset>元素定義標題,示例:

          <!DOCTYPE html>

          <html>

          <body>

          <form action="/demo/demo_form.asp">

          <fieldset>

          <legend>Personal information:</legend>

          First name:<br>

          <input type="text" name="firstname" value="Mickey">

          <br>

          Last name:<br>

          <input type="text" name="lastname" value="Mouse">

          <br><br>

          <input type="submit" value="Submit">

          </fieldset>

          </form>

          </body>

          </html>

          運行結果:

          4、<textarea> 元素

          <textarea> 元素定義多行輸入字段(文本域)、示例:

          <!DOCTYPE html>

          <html>

          <body>

          <form>

          <textarea name="message" rows="10" cols="30">

          The cat was playing in the garden.

          </textarea>

          </form>

          </body>

          </html>

          運行結果:

          5、HTML5<datalist>元素

          <datalist> 元素為 <input> 元素規定預定義選項列表。

          用戶會在他們輸入數據時看到預定義選項的下拉列表。

          <input> 元素的 list 屬性必須引用 <datalist> 元素的 id 屬性,示例:

          <!DOCTYPE html>

          <html>

          <body>

          <form action="/demo/demo_form.asp">

          <input list="browsers" name="browser">

          <datalist id="browsers">

          <option value="Internet Explorer">

          <option value="Firefox">

          <option value="Chrome">

          <option value="Opera">

          <option value="Safari">

          </datalist>

          <input type="submit">

          </form>

          </body>

          </html>

          運行結果:

          四、HTML表單輸入類型

          輸入類型

          定義

          text

          定義供文本輸入的單行輸入字段

          password

          定義密碼字段

          submit

          定義提交表單數據至表單處理程序的按鈕

          radio

          定義單選按鈕

          checkbox

          定義復選框

          <input>中的type:

          類型

          定義

          radio

          定義單選按鈕

          checkbox

          定義復選框

          button

          定義按鈕

          number

          用于應該包含數字值的輸入字段

          date

          用于應該包含日期的輸入字段

          color

          用于應該包含顏色的輸入字段

          range

          用于應該包含一定范圍內的值的輸入字段

          month

          允許用戶選擇月份和年份

          week

          允許用戶選擇周和年

          time

          允許用戶選擇時間(無時區)

          datetime

          允許用戶選擇日期和時間(有時區)

          datetime-local

          允許用戶選擇日期和時間(無時區)

          email

          用于應該包含電子郵件地址的輸入字段

          search

          用于搜索字段(搜索字段的表現類似常規文本字段)

          tel

          用于應該包含電話號碼的輸入字段

          url

          用于應該包含 URL 地址的輸入字段


          輸入限制:

          這就是有關HTML表單的大概內容了,希望這篇HTML的表單及其input輸入類型的知識點能對大家有所幫助。

          前面已經學習相關html大部分知識,基本上可以制作出簡單的頁面,但是這些頁面都是靜態的,一個網站如果要實現用戶的互動交流,這時表單就起到關鍵的作用,表單的用途很多,它主要用來收集用戶的相關信息,是網頁具有交互的功能。例如,用戶注冊登錄,留言等。

          下面會詳細介紹表單的使用方法,有以下內容:

          • 表單標簽form的使用
          • 表單控件使用

          表單標簽 —— form

          使用<form></form>標簽來創建一個表單,在其之間就是各種表單控件,如,輸入框,文本框,單選按鈕,多選按鈕,提交按鈕等。

          語法代碼如下:

          <form name="表單名稱" action="表單處理程序的服務地址" method="提交表單時所用的HTTP方法">
            ...... 表單控件......
            </form>

          1、action —— 處理程序

          這里的 action 屬性值表單提交的地址,就是表單收集好數據后要傳遞給遠程服務的地址,其地址可以是絕對路徑也可以是相對路徑,或者其它形式,如發送電子郵件。

          使用表單發送電子郵件:

          <form action="mailto:xxx@126.com">
            ...... 表單控件......
            </form>

          提交到后臺程序地址:

          <form action="action_page.php">
            ...... 表單控件......
            </form>

          2、name —— 表單名稱

          表單名稱,這一屬性不是必需的,但是為了防止表單信息提交到后臺處理程序時發生混亂,一般要設置一個名稱,且在同一頁面中最好是唯一的,不要和其它表單重復命名。

          <form name="loginForm">
            ...... 表單控件......
            </form>

          3、method —— 傳送數據方法

          method 屬性用來定義處理程序使用那種方法來獲取數據信息,常用的有 get 和 post (http 協議定義的方法)。

          <form name="loginForm" action="get 或 post">
            ...... 表單控件......
            </form>

          何時使用 GET?

          GET 最適合少量數據或不是很重要數據的提交,瀏覽器會設定容量限制,默認如何沒有設置method 屬性,表單則會使用get 方法。

          當您使用 GET 時,表單數據在頁面地址欄中是可見的,會在表單提交的地址后面跟一個問號“?” ,問號后面是數據,以 名稱1=值1&名稱2=值2 形式發送到后臺程序。

          地址欄會看到如下:

          action_page.php?firstname=Mickey&lastname=Mouse

          關于 GET 的注意事項:

          以名稱/值對的形式將表單數據追加到 URL

          永遠不要使用 GET 發送敏感數據!(提交的表單數據在 URL 中可見!)

          URL 的長度受到限制(2048 個字符)

          對于用戶希望將結果添加為書簽的表單提交很有用

          GET 適用于非安全數據,例如 Google 中的查詢字符串

          何時使用 POST?

          使用post 表單數據和url(表單提交地址)是分開發送的,在頁面地址欄中被提交的數據是不可見的,這樣安全性更好,用戶端會通知服務端獲取數據,所以這種情況沒有數據長度的限制,缺點是速度會慢些。

          關于 POST 的注意事項:

          將表單數據附加在 HTTP 請求的正文中(不在 URL 中顯示提交的表單數據)

          POST 沒有大小限制,可用于發送大量數據。

          帶有 POST 的表單提交后無法添加書簽

          4、enctype —— 編碼方式

          enctype 屬性規定在發送到服務器之前應該如何對表單數據進行編碼。

          <form enctype="value">

          有以下幾種值:

          含義

          application/x-www-form-urlencoded

          在發送前編碼所有字符(默認編碼方式)

          multipart/form-data

          不對字符編碼。

          在使用包含文件上傳控件的表單時,必須使用該值。

          text/plain

          以純文本的方式,空格轉換為 "+" 加號,但不對特殊字符編碼。

          5、target —— 目標顯示方式

          target 屬性規定在何處打開 action URL。表單的目標窗口通常用來顯示表單返回的信息,例如是否成功提交了表單,是否出錯等。

          <form target="value">

          屬性值有以下:

          描述

          _blank

          在新窗口中打開。

          _self

          默認。在表單當前的窗口中打開。

          _parent

          在父窗口中打開。

          _top

          在頂級窗口中打開。

          framename

          在指定的框架窗口中打開。

          看到這里是不是想的了之前學習超鏈接時候,a標簽也有同樣的屬性,這里差不多一個意思,只是用途不一樣。

          這里的窗口有可能是框架 frame 或 浮動窗口 iframe ,后面會講到框架和浮動窗口,就是在一個頁面中可以嵌套一個子窗口。

          表單控件的使用

          什么是表單控件,就是收集數據的各種形式控件,比如輸入框,密碼框,單選、多選按鈕,下拉菜單,文本域,文件域,提交按鈕等等。

          如下代碼:

          <form name="form1">
          <div>用戶名:<input name="username" type="text" ></div>
          <div>密碼:<input name="password" type="password" ></div>
          <div>性別:
          <input type="radio" name="sex" value="male" checked> 男
          <br>
          <input type="radio" name="sex" value="female"> 女
          </div>
          <div> 車輛:
          <select name="cars">
          <option value="volvo">baom</option>
          <option value="saab">Saab</option>
          <option value="fiat">Fiat</option>
          <option value="audi">Audi</option>
          </select>
          </div>
          <div>留言:
          <textarea name="message" rows="10" cols="30">
          請輸入文本
          </textarea>
          </div>
          </select>
            </form>

          效果如下:

          這里顯示了一個基本表單,包含了輸入框,密碼框,單選,下拉菜單,文本域等組件,下面會按其使用類型介紹表單控件。

          所有表單控件都一個name屬性和vaule屬性,用于和其它控件區別,后臺程序將會以此名稱獲取其表單控件對應的vaule值。

          下篇會介紹各種表單控件的使用,感謝關注。

          上篇:前端入門——html 表格的使用

          下篇:前端入門——html 表單控件使用


          主站蜘蛛池模板: 久久久久久免费一区二区三区| 日韩一区二区在线播放| 日韩视频一区二区三区| 无码人妻精品一区二区三区久久| 国产精品视频一区二区三区四| 熟妇人妻一区二区三区四区| 亚洲国产一区二区a毛片| 国产精品视频一区二区猎奇| 制服美女视频一区| 久久精品一区二区三区资源网| 精品一区二区三区免费毛片爱| 亚洲第一区二区快射影院| 国产传媒一区二区三区呀| 国产主播一区二区| 成人精品一区二区电影| 东京热无码一区二区三区av| 精品亚洲A∨无码一区二区三区 | 亚洲国产成人精品久久久国产成人一区二区三区综 | 婷婷国产成人精品一区二| 亚洲一区二区三区无码中文字幕| 精品一区二区三区自拍图片区| 色综合久久一区二区三区| 色妞AV永久一区二区国产AV| 亚洲色精品VR一区区三区| 久久国产午夜精品一区二区三区| 亚洲制服丝袜一区二区三区| 色综合视频一区二区三区| 国产福利微拍精品一区二区| 精品无码综合一区| 好爽毛片一区二区三区四无码三飞 | 国产拳头交一区二区| 亚洲AV无码一区二区乱孑伦AS | 国产精品一区二区久久国产| 免费无码一区二区三区蜜桃大| 国产一区二区三区免费| 后入内射国产一区二区| 无码人妻品一区二区三区精99 | 日韩一区二区三区在线精品| 中文字幕日韩一区二区三区不卡| 一区二区三区精品视频| 成人区人妻精品一区二区不卡|