最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

validate?注冊(cè)頁(yè)的表單數(shù)據(jù)校驗(yàn)實(shí)現(xiàn)詳解

 更新時(shí)間:2022年09月30日 15:53:47   作者:風(fēng)無(wú)雨  
這篇文章主要為大家介紹了validate?注冊(cè)頁(yè)的表單數(shù)據(jù)校驗(yàn)實(shí)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

1.注冊(cè)頁(yè)是什么

當(dāng)我們使用一個(gè)從未使用過(guò)的網(wǎng)站時(shí),想要注冊(cè)賬號(hào),點(diǎn)擊注冊(cè)賬號(hào)時(shí)看到的網(wǎng)頁(yè)就是注冊(cè)頁(yè)注冊(cè)頁(yè)例子如下:

我們看到以下的注冊(cè)頁(yè)中,有兩大類信息:

  • 第一大類是用戶信息類,

包括用戶名,密碼和email,他們都有自己的 取值規(guī)則 ,例如用戶名顯示不得小于3個(gè)字符

  • 第二大類是驗(yàn)證碼類,一般有兩種,

一種是短信或郵箱驗(yàn)證,這是為了綁定手機(jī)號(hào)或郵箱,

還有一種就下圖中的真人驗(yàn)證,為了避免機(jī)器人惡意訪問(wèn)信息量過(guò)大,通過(guò)驗(yàn)證計(jì)算題或者識(shí)別字母的方式來(lái)確定是真人訪問(wèn)

2.為什么需要注冊(cè)頁(yè)

目的:

  • 注冊(cè)頁(yè)的目的是讓用戶注冊(cè)賬號(hào)
  • 用戶通過(guò)賬號(hào)密碼來(lái)登錄網(wǎng)站
  • 網(wǎng)站記錄用戶的賬戶密碼,建立一個(gè)記錄每一個(gè)用戶信息的數(shù)據(jù)庫(kù)

數(shù)據(jù)校驗(yàn)

  • 用戶名和密碼都有一定的命名和設(shè)定規(guī)則
  • 為了避免不符合規(guī)則的命名和密碼發(fā)送到服務(wù)器,造成服務(wù)器壓力過(guò)大
  • 我們需要在前端頁(yè)面對(duì)數(shù)據(jù)進(jìn)行初篩,符合規(guī)則要求的才會(huì)被發(fā)送到服務(wù)器
  • 服務(wù)器再進(jìn)行用戶名是否重復(fù)的校驗(yàn)

3.注冊(cè)頁(yè)如何實(shí)現(xiàn)

本次所使用的技術(shù)棧:vue2.0,axios,element-ui,vuex,vue-router
需要實(shí)現(xiàn)的界面如下:

3.1分析業(yè)務(wù)需求

  • 1.獲取數(shù)據(jù): v-model雙向綁定三個(gè)數(shù)據(jù),分別是username.password,repassword
  • 2.校驗(yàn)數(shù)據(jù)
    (1)在data中添加校驗(yàn)規(guī)則
    (2)在模板中配置規(guī)則
    (3)處理最終結(jié)果
  • 3.發(fā)送數(shù)據(jù): 通過(guò)axios發(fā)送數(shù)據(jù)
  • 4.處理數(shù)據(jù): 判斷axios返回的code值,來(lái)處理數(shù)據(jù)

初始html模板如下

小貼士:

input框的前置icon圖標(biāo)通過(guò)prefix-icon="el-icon-user"實(shí)現(xiàn)

如果想要實(shí)現(xiàn)點(diǎn)擊小眼睛實(shí)現(xiàn)密碼顯示和保密.可以在el-input框便簽加上show-password實(shí)現(xiàn)

<!-- 注冊(cè)的表單區(qū)域 -->
  <el-form>
    <!-- 用戶名 -->
    <el-form-item>
      <el-input placeholder="請(qǐng)輸入用戶名" prefix-icon="el-icon-user"></el-input>
    </el-form-item>
    <!-- 密碼 -->
    <el-form-item>
      <el-input type="password" prefix-icon="el-icon-lock" placeholder="請(qǐng)輸入密碼"></el-input>
    </el-form-item>
    <!-- 確認(rèn)密碼 -->
    <el-form-item>
      <el-input type="password" prefix-icon="el-icon-lock" placeholder="請(qǐng)?jiān)俅未_認(rèn)密碼"></el-input>
    </el-form-item>
    <el-form-item>
      <el-button type="primary" class="btn-reg">注冊(cè)</el-button>
      <el-link type="info" @click="$router.push('/login')">去登錄</el-link>
    </el-form-item>
  </el-form>

3.2獲取數(shù)據(jù) v-model雙向綁定

首先在data中定義表單數(shù)據(jù)對(duì)象,包含用戶名,密碼和第二次密碼

 data() {
    return {
      form: {
        username: "",
        password: "",
        repassword: "",
      },
      }

然后在表單的三個(gè)input框中使用v-model綁定上面的三個(gè)數(shù)據(jù)

 <!-- 注冊(cè)的表單區(qū)域 -->
      <el-form >
        <el-form-item >
          <el-input
            placeholder="請(qǐng)輸入用戶名"
            prefix-icon="el-icon-user"
            v-model="form.username"
          ></el-input>
        </el-form-item>
        <el-form-item>
          <el-input
            placeholder="請(qǐng)輸入密碼"
            prefix-icon="el-icon-lock"
            v-model="form.password"
            show-password
          ></el-input>
        </el-form-item>
        <el-form-item >
          <el-input
            placeholder="請(qǐng)輸入再次確認(rèn)密碼"
            prefix-icon="el-icon-lock"
            v-model="form.repassword"
            show-password
          ></el-input>
        </el-form-item>
      </el-form>

3.3校驗(yàn)數(shù)據(jù)

首先在data中定義數(shù)據(jù)校驗(yàn)規(guī)則

formRules: {
        username: [
          { required: true, message: "用戶名不能為空", trigger: "blur" },
          {
            pattern: /^[a-zA-Z0-9]{1,10}$/,
            message: "用戶名必須是1-10位的字母數(shù)字",
            trigger: "blur",
          },
        ],
        password: [
          { required: true, message: "密碼不能為空", trigger: "blur" },
          {
            pattern: /^\S{6,15}$/,
            message: "密碼必須是6-15位的非空字符",
            trigger: "blur",
          },
        ],
        repassword: [
          { required: true, message: "請(qǐng)?jiān)俅未_認(rèn)密碼", trigger: "blur" },
          {
            pattern: /^\S{6,15}$/,
            message: "密碼必須是6-15位的非空字符",
            trigger: "blur",
          },
          // 使用 validator 屬性,來(lái)應(yīng)用自定義的校驗(yàn)規(guī)則
          {
            validator: (rule, value, callback) => {
              // 形參中的 value 表示被綁定的元素的值
              if (value !== this.form.password) {
                // 校驗(yàn)失敗
                callback(new Error("兩次密碼不一致!"));
              } else {
                // 校驗(yàn)成功
                callback();
              }
            },
            trigger: "blur",
          },
        ],
      },

然后對(duì)html中的form部分標(biāo)簽中增加內(nèi)容

  • 在el-form中:model綁定form,:rules綁定formRules,
  • 在el-form-item中prop綁定form中的數(shù)據(jù),注意這里不需要寫(xiě)form.username,只需要寫(xiě)username
<!-- 注冊(cè)的表單區(qū)域 -->
      <el-form :model="form" :rules="formRules" ref="formRef">
        <el-form-item prop="username">
          <el-input
            placeholder="請(qǐng)輸入用戶名"
            prefix-icon="el-icon-user"
            v-model="form.username"
          ></el-input>
        </el-form-item>
        <el-form-item prop="password">
          <el-input
            placeholder="請(qǐng)輸入密碼"
            prefix-icon="el-icon-lock"
            v-model="form.password"
            show-password
          ></el-input>
        </el-form-item>
        <el-form-item prop="repassword">
          <el-input
            placeholder="請(qǐng)輸入再次確認(rèn)密碼"
            prefix-icon="el-icon-lock"
            v-model="form.repassword"
            show-password
          ></el-input>
        </el-form-item>
      </el-form>

3.4method中的發(fā)送數(shù)據(jù)

首先給html中的注冊(cè)按鈕綁定一個(gè)點(diǎn)擊事件@click='doRegister'

<el-button type="primary" style="width: 100%" @click="doRegister">注冊(cè)</el-button>

然后在methods里定義事件doRegister:

  • 通過(guò)$refs獲得表單的dom元素
  • 使用validate對(duì)數(shù)據(jù)進(jìn)行校驗(yàn),如果成功發(fā)送ajax
  • 這里使用了promise的語(yǔ)法糖async-await,來(lái)實(shí)現(xiàn)同步的寫(xiě)法實(shí)現(xiàn)異步的效果
// 2.方法
  methods: {
    // 2.1注冊(cè)
    doRegister() {
      // (1).檢查表單時(shí)是否校驗(yàn)通過(guò)
      this.$refs.formRef.validate(async (valid) => {
        if (valid) {
          // (2).校驗(yàn)通過(guò),發(fā)送ajax
          const { data: res } = await this.$axios.post("/api/reg", {
            ...this.form,
          });
        }
      });
    },
  },

3.5處理數(shù)據(jù)

根據(jù)ajax返回的數(shù)據(jù)中的code來(lái)判斷,是注冊(cè)成功還是注冊(cè)失敗

(這里要通過(guò)后端提供的接口文檔來(lái)確定什么code是失敗,什么code是成功)
我這里code為0是成功,1是失敗

  • 注冊(cè)成功跳轉(zhuǎn)登錄頁(yè), this.$router.push("/login");通過(guò)路由實(shí)現(xiàn)
  • 彈出成功信息框: this.$message.success(res.message);
  • 錯(cuò)誤則彈出失敗信息框:this.$message.error(res.message)
     // 2.方法
  methods: {
    // 2.1注冊(cè)
    doRegister() {
      // (1).檢查表單時(shí)是否校驗(yàn)通過(guò)
      this.$refs.formRef.validate(async (valid) => {
        if (valid) {
          // (2).校驗(yàn)通過(guò),發(fā)送ajax
          const { data: res } = await this.$axios.post("/api/reg", {
            ...this.form,
          });
          // (3).處理數(shù)據(jù)
          if (res.code === 0) {
            // 跳轉(zhuǎn)登錄頁(yè)
            this.$router.push("/login");
            // 彈出信息框
            this.$message.success(res.message);
          } else {
            this.$message.error(res.message);
          }
        }
      });
    },
  },

4總結(jié)

業(yè)務(wù)思路

1.獲取數(shù)據(jù)

2.校驗(yàn)數(shù)據(jù)

3.發(fā)送請(qǐng)求

4.處理響應(yīng)數(shù)據(jù)

以上就是validate 注冊(cè)頁(yè)的表單數(shù)據(jù)校驗(yàn)實(shí)現(xiàn)詳解的詳細(xì)內(nèi)容,更多關(guān)于validate 注冊(cè)頁(yè)表單數(shù)據(jù)校驗(yàn)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • vue關(guān)于Promise的使用方式

    vue關(guān)于Promise的使用方式

    這篇文章主要介紹了vue關(guān)于Promise的使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • el-tooltip根據(jù)條件控制顯示的示例代碼

    el-tooltip根據(jù)條件控制顯示的示例代碼

    這篇文章主要介紹了el-tooltip根據(jù)條件控制顯示的示例代碼,包括列表型和樹(shù)狀圖型,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2023-12-12
  • Vue中slot-scope的深入理解(適合初學(xué)者)

    Vue中slot-scope的深入理解(適合初學(xué)者)

    這篇文章主要給大家介紹了關(guān)于Vue中slot-scope的深入理解,這個(gè)教程非常適合初學(xué)者,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • Vue的props父?jìng)髯拥氖纠a

    Vue的props父?jìng)髯拥氖纠a

    這篇文章主要介紹了Vue的props父?jìng)髯拥氖纠a,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • Vue2模版編譯流程詳解

    Vue2模版編譯流程詳解

    vue中有一張響應(yīng)式系統(tǒng)的流程圖,vue會(huì)將模板語(yǔ)法編譯成render函數(shù),通過(guò)render函數(shù)渲染生成Virtual?dom,但是官方并沒(méi)有對(duì)模板編譯有詳細(xì)的介紹,這篇文章帶大家一起學(xué)習(xí)下vue的模板編譯
    2023-07-07
  • iview給radio按鈕組件加點(diǎn)擊事件的實(shí)例

    iview給radio按鈕組件加點(diǎn)擊事件的實(shí)例

    下面小編就為大家?guī)?lái)一篇iview給radio按鈕組件加點(diǎn)擊事件的實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-09-09
  • vue基于el-table拓展之table-plus組件

    vue基于el-table拓展之table-plus組件

    本文主要介紹了vue基于el-table拓展之table-plus組件,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • 解決vue中props對(duì)象中設(shè)置多個(gè)默認(rèn)值的問(wèn)題

    解決vue中props對(duì)象中設(shè)置多個(gè)默認(rèn)值的問(wèn)題

    props中設(shè)置了默認(rèn)值,但是獲取時(shí)(獲取父頁(yè)面沒(méi)有傳的屬性) 打印出來(lái)是undefined,所以本文給大家介紹了解決vue中props對(duì)象中設(shè)置多個(gè)默認(rèn)值的問(wèn)題,需要的朋友可以參考下
    2024-04-04
  • 在vue+element-plus中無(wú)法同時(shí)使用v-for和v-if的問(wèn)題及解決方法

    在vue+element-plus中無(wú)法同時(shí)使用v-for和v-if的問(wèn)題及解決方法

    由于路由中存在不需要遍歷的數(shù)據(jù)所以像用v-if來(lái)過(guò)濾,但是報(bào)錯(cuò),百度說(shuō)vue不能同時(shí)使用v-if和v-for,今天小編給大家分享解決方式,感興趣的朋友跟隨小編一起看看吧
    2023-07-07
  • Vue中引入json的三種方式總結(jié)

    Vue中引入json的三種方式總結(jié)

    這篇文章主要介紹了Vue中引入json的三種方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05

最新評(píng)論

山东省| 齐齐哈尔市| 海原县| 麻江县| 花莲县| 南陵县| 维西| 临泉县| 梧州市| 高雄市| 南皮县| 庄河市| 乌兰县| 镇坪县| 酒泉市| 开阳县| 武陟县| 河西区| 内乡县| 林西县| 京山县| 定州市| 夏津县| 香港| 太保市| 通州市| 防城港市| 吉林省| 苍山县| 苍溪县| 富裕县| 云南省| 葫芦岛市| 永丰县| 永善县| 鄂温| 孙吴县| 云霄县| 永善县| 绿春县| 金阳县|