欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用Vue純前端實現(xiàn)發(fā)送短信驗證碼并實現(xiàn)倒計時

 更新時間:2024年04月18日 10:19:15   作者:小白Coding日志  
在實際的應用開發(fā)中,涉及用戶登錄驗證、密碼重置等場景時,通常需要前端實現(xiàn)發(fā)送短信驗證碼的功能,以提升用戶體驗和安全性,以下是一個簡單的前端實現(xiàn),演示了如何在用戶點擊發(fā)送驗證碼按鈕時觸發(fā)短信驗證碼的發(fā)送,并開始一個倒計時

你好,我是小白Coding日志,一個熱愛技術的程序員。在這里,我分享自己在編程和技術世界中的學習心得和體會。希望我的文章能夠給你帶來一些靈感和幫助。歡迎來到我的博客,一起在技術的世界里探索前行吧!
在實際的應用開發(fā)中,涉及用戶登錄驗證、密碼重置等場景時,通常需要前端實現(xiàn)發(fā)送短信驗證碼的功能,以提升用戶體驗和安全性。這個過程涉及與后端的協(xié)同配合,通過調用短信網(wǎng)關或短信服務接口,將驗證碼發(fā)送至用戶手機。以下是一個簡單的前端實現(xiàn),演示了如何在用戶點擊發(fā)送驗證碼按鈕時觸發(fā)短信驗證碼的發(fā)送,并開始一個倒計時。

功能分析

遇事先認真分析是我今年在工作上的要求之一
將目標分解為小模塊后再逐步完成。首先,我們需要一個手機號碼輸入框,并對輸入的手機號碼進行合法性校驗。其次,需要一個驗證碼輸入框,以及一個獲取短信驗證碼的按鈕。點擊該按鈕將向服務端發(fā)送獲取請求,參數(shù)為輸入的手機號碼,并開始顯示倒計時,倒計時結束后重新顯示獲取驗證碼按鈕。服務端收到請求后會給該手機號碼發(fā)送短信驗證碼,然后我們輸入收到的驗證碼即可進行下一步操作。
項目使用vue3+vite+ElementPlus,這里假設你已經(jīng)搭建好項目了!

頁面實現(xiàn)

<el-form :model="form" label-width="120px">
  <el-form-item label="手機號碼:">
    <el-input v-model="form.name" />
  </el-form-item>
  <el-form-item label="驗證碼:">
    <el-input v-model="form.code" >
      <template #suffix>
        <div v-if="messageCodeVis" class="second-text">{{countdown}}秒后重新獲取</div>
        <el-button v-else type="primary" link @click="sendCode">獲取驗證碼</el-button>
      </template>
    </el-input>
  </el-form-item>
</el-form>  
<el-button type="primary">確定</el-button>

實現(xiàn)倒計時

點擊獲取驗證碼按鈕將觸發(fā) **sendCode** 函數(shù),開始倒計時,并隱藏獲取按鈕,顯示倒計時的秒數(shù),倒計時結束后會重新顯示獲取按鈕。你可以通過修改 **countdown** 變量的值來指定倒計時的總秒數(shù)。 **startCountdown** 函數(shù)是整個功能的核心是直接可以拿來用的。最后在點擊發(fā)送按鈕的時候對手機號碼輸入框中的號碼做一個校驗。

const sendCode = () =>{
  const reg = /^1[3456789]\d{9}$/;
  if (!reg.test(form.value.phone)) return
  if(!form.value.phone) return ElMessage.error('請輸入手機號碼')
  countdown.value = 60
  messageCodeVis.value = true
  startCountdown()
}
/* 倒計時函數(shù) */
const startCountdown = () => {
  const intervalId = setInterval(() => {
    if (countdown.value > 0) {
      countdown.value--;
    } else {
      clearInterval(intervalId)
      messageCodeVis.value = false
    }
  }, 1000)
}

全部代碼

<script setup>
import { ref } from 'vue'
import { ElMessage } from 'element-plus';
const form = ref({
  phone: '',
  code: ''
})
const messageCodeVis = ref(false)
let countdown = ref(0)
const sendCode = () =>{
  const reg = /^1[3456789]\d{9}$/;
  if(!form.value.phone) return ElMessage.error('請輸入手機號碼')
  if (!reg.test(form.value.phone)) return
  countdown.value = 60
  messageCodeVis.value = true
  startCountdown()
}
/* 倒計時 */
const startCountdown = () => {
    const intervalId = setInterval(() => {
        if (countdown.value > 0) {
            countdown.value--;
        } else {
            clearInterval(intervalId)
            messageCodeVis.value = false
        }
    }, 1000)
}
const rulesForm = {
  phone: [
  { required: true, message: '請輸入手機號碼', trigger: 'blur' },
  { pattern: /^1[3456789]\d{9}$/, message: '請輸入有效的手機號碼', trigger: 'blur' }
  ]
}
</script>
<template>
    <el-form :model="form" :rules="rulesForm" label-width="120px">
      <el-form-item label="手機號碼:" prop="phone">
        <el-input v-model="form.phone" />
      </el-form-item>
      <el-form-item label="驗證碼:">
        <el-input v-model="form.code" >
          <template #suffix>
            <div v-if="messageCodeVis" class="second-text">{{countdown}}秒后重新獲取</div>
            <el-button v-else type="primary" link @click="sendCode">獲取驗證碼</el-button>
          </template>
        </el-input>
      </el-form-item>
    </el-form>  
  <el-button type="primary">確定</el-button>
</template>
<style scoped>
.read-the-docs {
  color: #888;
}
.second-text {
  color: #e60707;
}
</style>

到此這篇關于使用Vue純前端實現(xiàn)發(fā)送短信驗證碼并實現(xiàn)倒計時的文章就介紹到這了,更多相關使用Vue純前端實現(xiàn)發(fā)送短信驗證碼并實現(xiàn)倒計時內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • VUE Error: getaddrinfo ENOTFOUND localhost

    VUE Error: getaddrinfo ENOTFOUND localhost

    這篇文章主要介紹了VUE Error: getaddrinfo ENOTFOUND localhost,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05
  • 一次VUE項目中遇到XSS攻擊的實戰(zhàn)記錄

    一次VUE項目中遇到XSS攻擊的實戰(zhàn)記錄

    XSS?攻擊是頁面被注入了惡意的代碼,下面這篇文章主要給大家介紹了一次VUE項目中遇到XSS攻擊的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2021-12-12
  • vue.js利用Object.defineProperty實現(xiàn)雙向綁定

    vue.js利用Object.defineProperty實現(xiàn)雙向綁定

    這篇文章主要為大家詳細介紹了vue.js利用Object.defineProperty實現(xiàn)雙向綁定,幫大家解析神秘的Object.defineProperty方法
    2017-03-03
  • 一篇文章學會Vue中間件管道

    一篇文章學會Vue中間件管道

    這篇文章主要給大家介紹了如何通過一篇文章學會Vue中間件管道的相關資料,什么是中間件管道?中間件管道是一堆不同的中間件并行運行,本文通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2021-06-06
  • vue3的setup語法糖簡單封裝ckediter的過程

    vue3的setup語法糖簡單封裝ckediter的過程

    Vue3官方提供了 script setup 語法糖,只需在script標簽中添加setup,組件只需引入不用注冊,屬性和方法也不用返回,今天通過本文給大家分享vue3的setup語法糖簡單封裝ckediter的過程,感興趣的朋友一起看看吧
    2023-10-10
  • vue項目中接入websocket時需要ip端口動態(tài)部署問題

    vue項目中接入websocket時需要ip端口動態(tài)部署問題

    這篇文章主要介紹了vue項目中接入websocket時需要ip端口動態(tài)部署問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • Vue項目中封裝axios的方法

    Vue項目中封裝axios的方法

    這篇文章主要介紹了Vue項目中封裝axios的方法,axios 是一個輕量的 HTTP客戶端,基于 XMLHttpRequest 服務來執(zhí)行 HTTP 請求,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05
  • Vue異步請求導致頁面數(shù)據(jù)渲染錯誤問題解決方法示例

    Vue異步請求導致頁面數(shù)據(jù)渲染錯誤問題解決方法示例

    這篇文章主要為大家介紹了Vue中異步請求導致頁面數(shù)據(jù)渲染錯誤問題解決方法示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-09-09
  • Vue使用swiper問題(5.2.0版本,避免踩坑)

    Vue使用swiper問題(5.2.0版本,避免踩坑)

    這篇文章主要介紹了Vue使用swiper問題(5.2.0版本,避免踩坑),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • vue2實現(xiàn)移動端上傳、預覽、壓縮圖片解決拍照旋轉問題

    vue2實現(xiàn)移動端上傳、預覽、壓縮圖片解決拍照旋轉問題

    這篇文章主要介紹了vue2實現(xiàn)移動端上傳、預覽、壓縮圖片解決拍照旋轉問題,需要的朋友可以參考下
    2017-04-04

最新評論