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

Vue Form表單的使用方法(rules格式校驗網(wǎng)絡(luò)校驗鍵盤按鍵監(jiān)聽)

 更新時間:2024年11月22日 09:42:00   作者:張雨zy  
本文介紹了在Vue.js中使用表單校驗規(guī)則(rules)進行網(wǎng)絡(luò)請求校驗的方法,以及如何通過formRef引用表單對象并進行鍵盤按鍵監(jiān)聽,感興趣的朋友跟隨小編一起看看吧

Form表單

rules格式校驗

可以在validator中進行網(wǎng)絡(luò)請求,實現(xiàn)網(wǎng)絡(luò)校驗

const formRules = {
  userName: [{required: true, message: "用戶名不能為空", trigger: 'blur'}, {
    min: 5,
    max: 10,
    message: "長度必須5-10位",
    trigger: 'blur'
  }],
  passWord: [{required: true, message: "密碼不能為空", trigger: 'blur'}],
  reference: [{
    validator: referenceValidity,
    required: true,
    trigger: "blur",
  },],
}
function referenceValidity(rule, value, callback) {
  console.log('校驗推薦人')
  if (value === "" || value === undefined) {
    callback(new Error("請輸入推薦人姓名"));
  } else {
    //請求網(wǎng)絡(luò)校驗推廣人
    // console.log("輸入的推薦人姓名:" + value)
    // const _url = "xxxxxxxxxxx";
    // let param = {};
    // param.promotionPecialistName = value;
    // get(this.$http, _url, param).then(function (response) {
    //   let res = response.data;
    //   if (res.code === "I000000") {
    //     if (res.data.isFlag) {
    //       callback()
    //     } else {
    //       callback(new Error("推薦人不存在"))
    //     }
    //   } else {
    //     callback(new Error("推薦人不存在"))
    //   }
    // });
    callback(new Error("推薦人不存在"))
  }
}

formRef引用form對象 form表單中關(guān)聯(lián)formRef(引用對象),form(表單內(nèi)容),formRules(校驗規(guī)則)

<el-form ref="formRef" :model="form" :rules="formRules">
const formRef = ref()
function reqLogin() {
  console.log("賬號信息", form.value)
  formRef.value.validate((valid) => {
    console.log("formRef valid = ", valid)
    if (valid) {
      setToken()
      store.commit("setUserInfo", form.value)
      showToast("登錄成功")
      router.push('/')
    }
  })
}

鍵盤監(jiān)聽

onMounted(() => {
  console.log("頁面加載")
  document.addEventListener('keyup', onkeyup)
})
onBeforeUnmount(() => {
  document.removeEventListener('keyup', onkeyup)
})
function onkeyup(e) {
  if (e.key === 'Enter') {
    reqLogin()
  }
}

完整代碼

<script setup>
import {onBeforeUnmount, onMounted, ref} from "vue";
import {Lock, User} from "@element-plus/icons-vue";
import {useRouter} from "vue-router";
import {setToken} from "../utils/CookieUtil.js";
import {showToast} from "../utils/ToastUtil.js";
import {useStore} from "vuex";
const router = useRouter()
const store = useStore()
const form = ref({
  userName: "",
  passWord: "",
  reference: ""
})
const formRef = ref()
const formRules = {
  userName: [{required: true, message: "用戶名不能為空", trigger: 'blur'}, {
    min: 5,
    max: 10,
    message: "長度必須5-10位",
    trigger: 'blur'
  }],
  passWord: [{required: true, message: "密碼不能為空", trigger: 'blur'}],
  reference: [{
    validator: referenceValidity,
    required: true,
    trigger: "blur",
  },],
}
function referenceValidity(rule, value, callback) {
  console.log('校驗推薦人')
  if (value === "" || value === undefined) {
    callback(new Error("請輸入推薦人姓名"));
  } else {
    //請求網(wǎng)絡(luò)校驗推廣人
    // console.log("輸入的推薦人姓名:" + value)
    // const _url = "xxxxxxxxxxx";
    // let param = {};
    // param.promotionPecialistName = value;
    // get(this.$http, _url, param).then(function (response) {
    //   let res = response.data;
    //   if (res.code === "I000000") {
    //     if (res.data.isFlag) {
    //       callback()
    //     } else {
    //       callback(new Error("推薦人不存在"))
    //     }
    //   } else {
    //     callback(new Error("推薦人不存在"))
    //   }
    // });
    callback(new Error("推薦人不存在"))
  }
}
function onkeyup(e) {
  if (e.key === 'Enter') {
    reqLogin()
  }
}
onMounted(() => {
  console.log("頁面加載")
  document.addEventListener('keyup', onkeyup)
})
onBeforeUnmount(() => {
  document.removeEventListener('keyup', onkeyup)
})
function reqLogin() {
  console.log("賬號信息", form.value)
  formRef.value.validate((valid) => {
    console.log("formRef valid = ", valid)
    if (valid) {
      setToken()
      store.commit("setUserInfo", form.value)
      showToast("登錄成功")
      router.push('/')
    }
  })
}
</script>
<template>
  <div style="height: 100vh;width: 100vw;display: flex;flex-direction: row">
    <div class="flex-col-center" style="width: 70%;height: 100%;background: #213547;">
      <span style="font-size: 40px;color: white;">測試系統(tǒng)登錄頁面</span>
      <span style="font-size: 20px;color: white;">演示Demo</span>
    </div>
    <div class="flex-col-center" style="width: 30%;padding: 100px">
      <h2 style="font-size: 20px">歡迎回來</h2>
      <el-form ref="formRef" :model="form" :rules="formRules">
        <el-form-item label="賬號" prop="userName">
          <el-input v-model="form.userName" placeholder="請輸入賬號">
            <template #prefix>
              <el-icon>
                <User/>
              </el-icon>
            </template>
          </el-input>
        </el-form-item>
        <el-form-item label="密碼" prop="passWord">
          <el-input v-model="form.passWord" placeholder="請輸入密碼" show-password type="password">
            <template #prefix>
              <el-icon>
                <Lock/>
              </el-icon>
            </template>
          </el-input>
        </el-form-item>
        <el-form-item label="推薦人" prop="reference">
          <el-input v-model="form.reference" placeholder="請輸入推薦人"></el-input>
        </el-form-item>
      </el-form>
      <el-button type="primary" @click="reqLogin()">登錄</el-button>
    </div>
  </div>
</template>
<style scoped>
.flex-col-center {
  display: flex;
  flex-direction: column;
  justify-content: center
}
</style>

到此這篇關(guān)于Vue Form表單的使用,rules格式校驗網(wǎng)絡(luò)校驗,鍵盤按鍵監(jiān)聽的文章就介紹到這了,更多相關(guān)Vue Form表單rules格式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Element-Plus的ClickOutside指令導(dǎo)致內(nèi)存泄漏的解決辦法

    Element-Plus的ClickOutside指令導(dǎo)致內(nèi)存泄漏的解決辦法

    這篇文章給大家介紹了Element-Plus的ClickOutside指令導(dǎo)致內(nèi)存泄漏的解決辦法,文中給出了詳細的解決辦法,遇到同樣問題的小伙伴可以參考閱讀一下本文
    2024-01-01
  • vue?watch監(jiān)聽方法總結(jié)

    vue?watch監(jiān)聽方法總結(jié)

    這篇文章主要給大家分享的是vue?watch監(jiān)聽方法總結(jié),偵聽器一般來說是用來監(jiān)聽數(shù)據(jù)的變化,默認是在數(shù)據(jù)發(fā)生變化時執(zhí)行。監(jiān)聽的數(shù)據(jù)名放到這里面作為函數(shù)名,這個函數(shù)里面有兩個參數(shù),一個是新值,一個是舊值。下面我們就一起進入文章了解更具體的內(nèi)容吧
    2021-12-12
  • vue實現(xiàn)指定日期之間的倒計時

    vue實現(xiàn)指定日期之間的倒計時

    這篇文章主要為大家詳細介紹了vue實現(xiàn)指定日期之間的倒計時,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • 詳解Vue前端對axios的封裝和使用

    詳解Vue前端對axios的封裝和使用

    這篇文章主要介紹了Vue前端對axios的封裝和使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-04-04
  • Vue中this.$nextTick()的理解與使用方法

    Vue中this.$nextTick()的理解與使用方法

    this.$nextTick是在下次dom更新循環(huán)之后執(zhí)行延遲回調(diào),在修改數(shù)據(jù)之后立即使用這個方法,獲取更新后的dom,下面這篇文章主要給大家介紹了關(guān)于Vue中this.$nextTick()的理解與使用的相關(guān)資料,需要的朋友可以參考下
    2022-02-02
  • element-ui圖片上傳組件查看和限制方式

    element-ui圖片上傳組件查看和限制方式

    這篇文章主要介紹了關(guān)于element-ui圖片上傳組件查看和限制方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • 深入理解vue中的slot與slot-scope

    深入理解vue中的slot與slot-scope

    這篇文章主要介紹了vue中的slot與slot-scope的相關(guān)知識,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-04-04
  • vue.js表單驗證插件(vee-validate)的使用教程詳解

    vue.js表單驗證插件(vee-validate)的使用教程詳解

    這篇文章主要介紹了vue.js表單驗證插件(vee-validate)的使用,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-05-05
  • Vue+(SSE)EventSource實現(xiàn)流式輸出過程

    Vue+(SSE)EventSource實現(xiàn)流式輸出過程

    文章介紹了如何在Vue項目中使用EventSource和FetchEventSource實現(xiàn)服務(wù)器端事件驅(qū)動推送,并分享了它們的特點、優(yōu)勢以及使用流程,通過設(shè)置請求頭和請求方式,解決了EventSource無法設(shè)置這些屬性的問題
    2025-12-12
  • vue中@keyup.enter失效問題及解決

    vue中@keyup.enter失效問題及解決

    這篇文章主要介紹了vue中@keyup.enter失效問題及解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10

最新評論

澳门| 泊头市| 周宁县| 崇州市| 江油市| 镇沅| 章丘市| 丰城市| 南皮县| 永吉县| 丰宁| 黄骅市| 安新县| 黄陵县| 尖扎县| 固原市| 绵阳市| 包头市| 桑日县| 仪陇县| 宜兴市| 观塘区| 二连浩特市| 西华县| 岳阳市| 徐汇区| 金寨县| 宁国市| 碌曲县| 大石桥市| 晴隆县| 徐汇区| 大英县| 历史| 同心县| 阜阳市| 民丰县| 平邑县| 宁陵县| 唐山市| 临武县|