亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

el-form實(shí)現(xiàn)表單和圖片手動(dòng)上傳和校驗(yàn)功能

 更新時(shí)間:2024年01月31日 16:43:02   作者:說(shuō)好不emo  
在寫項(xiàng)目時(shí),難免遇到需要上傳表單,圖片等文件,且表單內(nèi)容需進(jìn)行驗(yàn)證及必填項(xiàng)提示,圖片需要和信息一起傳遞且圖片載入后需可預(yù)覽,這篇文章給大家介紹el-form實(shí)現(xiàn)表單和圖片手動(dòng)上傳和校驗(yàn)功能,感興趣的朋友一起看看吧

在寫項(xiàng)目時(shí),難免遇到需要上傳表單,圖片等文件。且表單內(nèi)容需進(jìn)行驗(yàn)證及必填項(xiàng)提示,圖片需要和信息一起傳遞且圖片載入后需可預(yù)覽。

這里舉一個(gè)例子:

表單數(shù)據(jù)

從上面的圖可以看出注冊(cè)環(huán)節(jié)分為了兩部分?jǐn)?shù)據(jù),左邊是注冊(cè)時(shí)需求提交的表單信息,右邊是需求上傳的圖片。先來(lái)解決左邊的表單數(shù)據(jù),el-form是ElementUI封裝的表單組件,可以收集、校驗(yàn)和提交數(shù)據(jù)。el-form中的model用來(lái)綁定表單數(shù)據(jù)對(duì)象,el-form-item中的prop為model對(duì)象中傳遞的字段,el-input中的v-model綁定的是該字段對(duì)應(yīng)的屬性值。

<el-form :model='loginForm'
          autocomplete='on'
         :rules='rules'
          class='login-form'>
     <el-form-item prop='username' label='用戶名'>
          <el-input placeholder='請(qǐng)輸入用戶名'
                    name='username'
                    type='text'
                    v-model='loginForm.username'
                    autocomplete='on'/>
      <el-form-item>
</el-form>

el-upload組件

input的name屬性是用來(lái)定義input元素的名稱,只有設(shè)置了 name 屬性的表單元素才能在提交表單時(shí)傳遞它們的值。input的value屬性的type屬性來(lái)決定,type屬性屬性可以是button、reset、submit、text、password、hidden、checkbox、radio、image、file等。el-upload組件就是封裝的type屬性為file的input,并提供了before-upload、on-progress、on-success、on-error、on-preview、on-remove等鉤子函數(shù)來(lái)獲取上傳過(guò)程中的屬性狀態(tài)等信息。

表單驗(yàn)證

ElementUI提供了表單驗(yàn)證的規(guī)則,可以通過(guò)rules屬性來(lái)定義對(duì)應(yīng)el-form-item中的驗(yàn)證規(guī)則(支持多個(gè)規(guī)則驗(yàn)證)。當(dāng)然如果覺(jué)得ElementUI提供的表單驗(yàn)證功能無(wú)法滿足項(xiàng)目需求我們也可以自定義驗(yàn)證規(guī)則。通過(guò)validator屬性調(diào)用自定義的校驗(yàn)方法,自定義校驗(yàn)callback必須被調(diào)用。自定義校驗(yàn)規(guī)則可以參考文章自定義表單校驗(yàn)規(guī)則及常用表單校驗(yàn),我將一些常用的校驗(yàn)都寫在了一起方便后續(xù)直接使用。

文件上傳HTML構(gòu)建

ElementUI提供了一個(gè)封裝好的的上傳組件el-upload,封裝了文件上傳的一系列鉤子函數(shù),可以監(jiān)聽文件上傳過(guò)程中的所有事件。el-upload連請(qǐng)求也封裝了,只要通過(guò)action提供請(qǐng)求路徑(后端文件的上傳地址)就可以將文件直接上傳到服務(wù)器。

文件上傳樣式設(shè)計(jì)

根據(jù)自己的需求設(shè)計(jì)一個(gè)文件樣式,這里我用虛擬邊框來(lái)顯示文件上傳區(qū)域。中間放個(gè)圖標(biāo)來(lái)觸發(fā)input選框,圖片文件上傳后就可以直接在當(dāng)前區(qū)域進(jìn)行預(yù)覽。

阻止自動(dòng)上傳并獲取文件

在el-upload中定義屬性:auto-upload=“false” 可以禁止文件自動(dòng)上傳,既然禁止了自動(dòng)上傳那么我們就需要拿到文件對(duì)象。通過(guò)upload組件的on-change屬性我們可以監(jiān)聽文件添加、上傳時(shí)的狀態(tài)改變,利用該屬性觸發(fā)自定義事件可以獲取到需要的文件屬性。利用window.createObjectURL(e.raw)創(chuàng)建圖片地址實(shí)現(xiàn)本地預(yù)覽,如果fileList長(zhǎng)度大于0說(shuō)明已經(jīng)上傳了圖片這時(shí)我們就通過(guò)clearValidate去掉校驗(yàn)提示。

表單和圖片上傳

有文件的form表單上傳數(shù)據(jù)要用formData類型,我們需要?jiǎng)?chuàng)建一個(gè) FormData 對(duì)象來(lái)接收文件數(shù)據(jù)。選擇了圖片并填寫必填信息之后點(diǎn)擊【注冊(cè)】按鈕發(fā)起注冊(cè)請(qǐng)求,在register 方法里把表單信息通過(guò)append將數(shù)據(jù)添加到formData中。然后利用axios向后臺(tái)發(fā)起注冊(cè)請(qǐng)求并發(fā)送注冊(cè)信息,res為返回的請(qǐng)求結(jié)果。

總結(jié):

這里主要是多了圖片的手動(dòng)上傳,el-upload組件默認(rèn)會(huì)自動(dòng)上傳提交的文件。這里要求圖片不允許自動(dòng)上傳,需要和信息一起在提交的時(shí)候進(jìn)行傳遞。

附上源碼供參考:

<el-form :model="loginForm"
          autocomplete="on"
          :rules="rules"
          class="login-form">
  <div>
    <el-form-item prop="username" label="用戶名">
      <el-input placeholder="請(qǐng)輸入用戶名"
                name="username"
                type="text"
                v-model="loginForm.username"
                autocomplete="on" />
    </el-form-item>
		<el-form-item prop="file"
              label="營(yíng)業(yè)執(zhí)照">
  		<el-upload class="fileupload"
              ref="upload"
              action="http://www.fiitool.com/upload"
              ::limit="1"
              :show-file-list="false"
              :on-change="PicturePreview"
              :auto-upload="false"
              accept="image/png,image/gif,image/jpg,image/jpeg">
    <i class="el-icon-upload avatar-uploader-icon"></i>
    <div v-show="!dialogImageUrl"
          slot="tip"
          class="el-upload__text upload__tip">上傳照片</div>
 	 </el-upload>
	</el-form-item>
</el-form>
rules: {
  username: [
    { required: true, message: '請(qǐng)輸入用戶名', trigger: 'blur' },
    { validator: check.Username, trigger: 'blur' }
  ],
  password: [
    { required: true, message: '請(qǐng)輸入密碼', trigger: 'blur' },
    { validator: check.SimplePwd, trigger: 'blur' }
  ],
  company: [
    { required: true, message: '請(qǐng)輸入公司名稱', trigger: 'blur' },
    { validator: check.Company, trigger: 'blur' }
  ],
  phone: [
    { required: true, message: '請(qǐng)輸入手機(jī)號(hào)', trigger: 'blur' },
    { validator: check.Phone, trigger: 'blur' }
  ],
  email: [
    { required: true, message: '請(qǐng)輸入郵箱', trigger: 'blur' },
    { validator: check.Email, trigger: 'blur' }
  ],
  file: [
    { required: true, message: '請(qǐng)上傳營(yíng)業(yè)執(zhí)照' }
  ]
}
PicturePreview (file, fileList) {
  var URL = null
  if (window.createObjectURL !== undefined) {
    URL = window.createObjectURL(file.raw) // basic
  } else if (window.URL !== undefined) {
    URL = window.URL.createObjectURL(file.raw) // IE,google,360,Safari,firefox
  } else if (window.webkitURL !== undefined) {
    URL = window.webkitURL.createObjectURL(file.raw) // webkit
  }
  this.ImageUrl = URL
  this.registerForm.license = file.raw
  if (fileList.length > 0) {
    this.$refs['fileupload'].clearValidate() // 去掉file驗(yàn)證
  }
},
//CSS樣式
.files {
  .el-form-item {
    width: 100%;
    height: 100%;
    text-align: center;
    /deep/ {
      .el-form-item__content {
        border: 1px dashed #d9d9d9;
        border-radius: 6px;
        cursor: pointer;
        line-height: normal;
        padding: 5px;
        .fileupload {
          width: 100%;
          height: 100%;
          .uploader-icon {
            font-size: 40px;
            &:hover {
              color: royalblue;
            }
          }
        }
      }
    }
  }
}
 

到此這篇關(guān)于el-form實(shí)現(xiàn)表單和圖片手動(dòng)上傳和校驗(yàn)的文章就介紹到這了,更多相關(guān)el-form表單和圖片上傳內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • uniapp?Android解決?APP菜單、按鈕權(quán)限控制方法

    uniapp?Android解決?APP菜單、按鈕權(quán)限控制方法

    這篇文章主要介紹了uniapp?Android解決?APP菜單、按鈕權(quán)限控制方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-01-01
  • JavaScript實(shí)現(xiàn)環(huán)繞鼠標(biāo)旋轉(zhuǎn)效果

    JavaScript實(shí)現(xiàn)環(huán)繞鼠標(biāo)旋轉(zhuǎn)效果

    這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)環(huán)繞鼠標(biāo)旋轉(zhuǎn)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • Google 爬蟲如何抓取 JavaScript 的內(nèi)容

    Google 爬蟲如何抓取 JavaScript 的內(nèi)容

    我們測(cè)試了谷歌爬蟲是如何抓取 JavaScript,下面就是我們從中學(xué)習(xí)到的知識(shí),需要的朋友可以參考下
    2017-04-04
  • JavaScript實(shí)現(xiàn)煙花綻放動(dòng)畫效果

    JavaScript實(shí)現(xiàn)煙花綻放動(dòng)畫效果

    這篇文章主要介紹了JavaScript如何實(shí)現(xiàn)煙花綻放動(dòng)畫效果,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-08-08
  • javascript實(shí)現(xiàn)列表滾動(dòng)的方法

    javascript實(shí)現(xiàn)列表滾動(dòng)的方法

    這篇文章主要介紹了javascript實(shí)現(xiàn)列表滾動(dòng)的方法,較為詳細(xì)的分析了javascript實(shí)現(xiàn)列表滾動(dòng)的頁(yè)面布局及javascript滾動(dòng)效果的實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07
  • Canvas放置反彈效果隨機(jī)圖形(實(shí)例)

    Canvas放置反彈效果隨機(jī)圖形(實(shí)例)

    下面小編就為大家?guī)?lái)一篇Canvas放置反彈效果隨機(jī)圖形(實(shí)例)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-08-08
  • javascript獲取form里的表單元素的示例代碼

    javascript獲取form里的表單元素的示例代碼

    本篇文章主要是對(duì)javascript獲取form里的表單元素的示例代碼進(jìn)行了介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助
    2014-02-02
  • JS中offset和勻速動(dòng)畫詳解

    JS中offset和勻速動(dòng)畫詳解

    這篇文章主要介紹了JavaScript動(dòng)畫:offset和勻速動(dòng)畫詳解(含輪播圖的實(shí)現(xiàn)),并把實(shí)現(xiàn)代碼做了分享,有興趣的朋友參考下。
    2018-02-02
  • JavaScript中innerHTML,innerText,outerHTML的用法及區(qū)別

    JavaScript中innerHTML,innerText,outerHTML的用法及區(qū)別

    在javascript中如果我們要獲取對(duì)象內(nèi)容,js為我們提供了三種方法outerhtml、innerhtml和innertext,但他們之間具體怎么使用與具體的區(qū)別在哪里,可能很多人不知道吧,接下來(lái)跟著小編一起來(lái)學(xué)習(xí)innerHTML,innerText,outerHTML的用法及區(qū)別吧。
    2015-09-09
  • 微信小程序?qū)崿F(xiàn)給嵌套template模板傳遞數(shù)據(jù)的方式總結(jié)

    微信小程序?qū)崿F(xiàn)給嵌套template模板傳遞數(shù)據(jù)的方式總結(jié)

    這篇文章主要介紹了微信小程序?qū)崿F(xiàn)給嵌套template模板傳遞數(shù)據(jù)的方式,結(jié)合實(shí)例形式總結(jié)分析了微信小程序嵌套template模板的定義、調(diào)用、參數(shù)傳遞及相關(guān)使用技巧,需要的朋友可以參考下
    2017-12-12

最新評(píng)論