掃碼槍與Input的火花

文章目錄

  • 前言
  • 一、需求:交互細節
  • 二、具體實現
    • 兩個核心的函數:
    • 自動聚焦
  • 三,擴展知識
    • @input 與 @change的區別


前言

在瀏覽器掃描條形碼獲取條形的值,再操作對應的邏輯。這是比較常見的業務,這里記錄實際操作。

其中PC端用的是elmentui-plus,mobile端用的vant-ui


一、需求:交互細節

這里用的都是input框。
1.直接掃碼條形碼后,獲取到條形的值。處理相應邏輯。有的是跳轉頁面,有的是繼續掃碼,繼續掃碼這里就要input框的值要清零。
2.在當前頁面,可以支持是否選擇自動聚焦到Input框。
3.支持手動輸入
4.都是把英文轉為大寫,前面空格去掉。
5.支持點擊tab,enter鍵盤后觸發。
6. input的值輸入后,立即Disable input框,這里防止異步操作還沒完成,狀態更新不及時。

二、具體實現

這里是vantui的代碼

        <van-fieldref="BarCodeRef"class="custom-barcode-input"v-model="variable.BarCode"placeholder="Scan BarCode"@input="BarCodeChange"@keyup.enter="BarCodeChangeImmediate"@keydown.tab="BarCodeChangeImmediate"/>

其中BarCodeChange需要用debounce ,如果沒有加debounce 的話,掃碼405 的條形碼,掃到4的時候 @input 了 就立即觸發 了。
在這里插入圖片描述

兩個核心的函數:

BarCodeChange :

 const BarCodeChange = () => {console.log('Code:',variable.BarCode)if (isHasCalledImmediate.value) {isHasCalledImmediate.value = falsereturn}BarCodeChangeImmediate(false)}

BarCodeChangeImmediate :

const BarCodeChangeImmediate = async (isImmediate: boolean = true) => {console.log('BarCodeChangeImmediate')if (!variable.BarCode) {return}// 有些地方需要立即觸發if (isImmediate) {isHasCalledImmediate.value = true}variable.BarCode = String(variable.BarCode).trim()?.toUpperCase()console.log(variable.BarCode, 'scanVal')// 處理對應的邏輯fun()
}

自動聚焦

清空input的值,并且聚焦。可以考慮抽一個hooks。

const resetBarCodeAdnFocus = () => {let timerId = setTimeout(() => {variable.BarCode = ''BarCodeRef.value?.focus()clearTimeout(timerId)}, 0)
}

三,擴展知識

@input 與 @change的區別

@input 和 @change 是兩個不同的事件,它們的區別在于觸發時機和觸發條件。

@input 事件會在用戶輸入任何內容時都會觸發,包括敲擊鍵盤、鼠標點擊、剪切粘貼等,只要表單元素的值發生變化,就會觸發 @input 事件。

@change 事件只有在表單元素失去焦點時才會觸發,也就是用戶點擊外部區域或按下 Enter 鍵確認輸入時觸發。如果用戶一直保持焦點在表單元素上,即使輸入內容發生變化,也不會觸發 @change 事件。

另外,@input 事件可以實時監聽用戶的輸入內容,而 @change 事件只會在用戶完成輸入并且失去焦點后才會觸發。

因此,如果需要實時獲取用戶輸入內容,可以使用 @input 事件;如果只需要在用戶完成輸入后獲取內容,可以使用 @change 事件。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/12204.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/12204.shtml
英文地址,請注明出處:http://en.pswp.cn/web/12204.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

2023年國賽高教杯數學建模C題蔬菜類商品的自動定價與補貨決策解題全過程文檔及程序

2023年國賽高教杯數學建模 C題 蔬菜類商品的自動定價與補貨決策 原題再現 在生鮮商超中&#xff0c;一般蔬菜類商品的保鮮期都比較短&#xff0c;且品相隨銷售時間的增加而變差&#xff0c;大部分品種如當日未售出&#xff0c;隔日就無法再售。因此&#xff0c;商超通常會根據…

JSON 轉為json串后出現 “$ref“

問題描述 轉為JSON 串時出現 "$ref":"$.RequestParam.list[0]" $ref&#xff1a; fastjson數據重復的部分會用引用代替&#xff0c;當一個對象包含另一個對象時&#xff0c;fastjson就會把該對象解析成引用 “$ref”:”..” 上一級 “$ref”:”” 當前對…

2、架構-服務間的通信

遠程服務將計算機程序的工作范圍從單機擴展至網絡&#xff0c;從本地延 伸至遠程&#xff0c;是構建分布式系統的首要基礎。而遠程服務又不僅僅是為 分布式系統服務的&#xff0c;在網絡時代&#xff0c;瀏覽器、移動設備、桌面應用和服 務端的程序&#xff0c;普遍都有與其他設…

分布式搜索-elaticsearch基礎 安裝es

這里是在虛擬機的Linux系統里安裝es的教程: 1.創建網絡 在Finashell終端輸入指令 docker network create es-net 2.將es.tar安裝包放入tmp的目錄下 輸入指令加載鏡像&#xff1a;docker load -i es.tar 3.再運行docker 命令 docker run -d \--name es \-e "ES_JAVA_O…

UE4_照亮環境_光束light beam

學習筆記&#xff0c;不喜勿噴&#xff0c;侵權立刪&#xff01;祝愿生活越來越好&#xff01; 光束&#xff1a;模擬大氣中散射的光線。利用定向光源模擬真實曙暮光效果或大氣散射的陰影&#xff0c;即可生成 光束 。這些光線為場景添加深度和真實度。 一&#xff1a;一些參數…

RabbitMQ部署指南.md

RabbitMQ部署指南 1.單機部署 我們在Centos7虛擬機中使用Docker來安裝。 1.1.下載鏡像 方式一&#xff1a;在線拉取 docker pull rabbitmq:3.8-management方式二&#xff1a;從本地加載 在課前資料已經提供了鏡像包&#xff1a; 上傳到虛擬機中后&#xff0c;使用命令加載…

ASP.NET銀行大廳自助信息系統的開發與實現

摘 要 本畢業設計在基于銀行業務大廳現有業務的基礎上&#xff0c;針對自助銀行的概念和其獨有特點&#xff0c;通過.NETSQL技術&#xff0c;開發一個簡單的銀行大廳自助信息系統&#xff0c;完成一些自助銀行的業務需求如帳戶信息查詢、帳戶掛失、自助交費、留言、新聞查詢…

jmeter中java請求,解決不支持協議和元件,實現自定義元件

目錄 java請求 作用場景 JavaTest類源碼分析 編寫java請求樣例 新建java工程&#xff0c;導入jmeter主要依賴。 編寫java請求類&#xff0c;繼承AbstractJavaSamplerClient, 導入工程為jar包&#xff0c;放置jmeter安裝目錄下lib/ext目錄 重啟jmeter&#xff0c;添加ja…

3D,點云下采樣

文章目錄 一、隨機采樣1、算法原理2、步驟二、格點采樣格點采樣的特點三、均勻采樣1、類似體素網格采樣2、固定間隔采樣3、最遠點采樣四、曲率采樣曲率采樣的特點:參考資料:對于大規模點云處理而言,直接對點云進行特征提取能較好地保留三維結構信息。但由于點云的無序性,直…

flutter開發實戰-log日志存儲zip上傳,發送釘釘機器人消息

flutter開發實戰-log日志存儲zip上傳&#xff0c;發送釘釘機器人消息 當我們需要Apk上傳的時候&#xff0c;我們需要將日志打包并上傳到七牛&#xff0c;上傳之后通過釘釘通知我們日志下載地址。 這里我使用的是loggy來處理日志 一、引入loggy日志格式插件 在工程的pubspec.…

【經驗總結】超算互聯網服務器 transformers 加載本地模型

1. 背景 使用 超算互聯網 的云服務&#xff0c;不能連接外網&#xff0c;只能把模型下載到本地&#xff0c;再上傳上去到云服務。 2. 模型下載 在 模型中 https://huggingface.co/models 找到所需的模型后 點擊下載 config.json pytorch_model.bin vocab.txt 3. 上傳模型文…

Flutter 中的 CupertinoAlertDialog 小部件:全面指南

Flutter 中的 CupertinoAlertDialog 小部件&#xff1a;全面指南 在Flutter中&#xff0c;CupertinoAlertDialog是用于在iOS風格的應用中顯示警告或提示信息的模態對話框。它以其圓角卡片和模糊背景為特點&#xff0c;為用戶提供了一個簡潔而直觀的交互界面。CupertinoAlertDi…

IT行業找工作十面十敗,不妨試試鴻蒙開發崗~

近期某脈上看到這樣一則帖子&#xff0c;討論的非常激烈&#xff01; 相信也有不少人有和他這情況類似&#xff0c;像他這種失業的狀態&#xff0c;近兩年大家或多或少都深有體驗。由于互聯網行業進過了十幾年的快速發展&#xff0c;從2G→3G→4G→5G&#xff0c;在這個期間人們…

c++ 獲取機器碼

看到網上代碼代碼都沒什么好的&#xff0c;自己備用一個 #include <iostream> #include <string> #include <sstream> #include <iomanip> #include <Windows.h> #include <iphlpapi.h> // 包含這個頭文件以獲取 PIP_ADAPTER_INFO #inclu…

elasticsearch-head 源碼運行

1、下載安裝nodejs 地址&#xff1a;Node.js — Run JavaScript Everywhere 2、git下載 elasticsearch-head 源碼 地址&#xff1a;GitHub - mobz/elasticsearch-head: A web front end for an elastic search cluster 3、使用cmd 進入 elasticsearch-head 目錄 4、依次執…

嵌入式學習-M4的基本定時器

基本介紹 框圖分析 時鐘選擇 計數器結構 開啟重裝載值寄存器的影子寄存器的工作時序圖 未開啟重裝載值寄存器的影子寄存器的工作時序圖 更新事件以及中斷 相關寄存器 相關庫函數

Cesium+山海鯨:可視化技術的完美融合

在當今數字化浪潮中&#xff0c;可視化技術已經成為各個行業提升效率和優化決策的關鍵。特別是在地理信息系統&#xff08;GIS&#xff09;和數字孿生領域&#xff0c;這種技術的重要性更加凸顯。而山海鯨可視化與Cesium的融合&#xff0c;無疑是這一領域的重大突破。 首先&am…

【Spring】BeanFactory源碼翻譯

package org.springframework.beans.factory;import org.springframework.beans.BeansException; import org.springframework.core.ResolvableType; import org.springframework.lang.Nullable;/*** The root interface for accessing a Spring bean container.* 用于訪問Spri…

量化交易:Dual Thrust策略

哈嘍&#xff0c;大家好&#xff0c;我是木頭左&#xff01; Dual Thrust策略起源于20世紀80年代&#xff0c;由美國著名交易員和金融作家Larry Williams首次提出。這一策略的核心思想是通過捕捉市場中的短期波動來實現盈利。Larry Williams通過多年的研究和實踐&#xff0c;發…

智能EDM郵件群發工具哪個好?

企業之間的競爭日益激烈&#xff0c;如何高效、精準地觸達目標客戶&#xff0c;成為每個市場戰略家必須面對的挑戰。在此背景下&#xff0c;云銜科技憑借其前沿的AI技術和深厚的行業洞察&#xff0c;匠心推出了全方位一站式智能EDM郵件營銷服務平臺&#xff0c;重新定義了郵件營…