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

js 獲取掃碼槍輸入數(shù)據(jù)的方法

 更新時(shí)間:2020年06月10日 08:53:28   作者:我們明天會(huì)更好  
這篇文章主要介紹了js 獲取掃碼槍輸入數(shù)據(jù)的方法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

1、掃碼槍相當(dāng)于鍵盤輸入設(shè)備,輸入一連串?dāng)?shù)字后加一個(gè)enter鍵。但在實(shí)際開發(fā)中需要區(qū)分是掃描槍輸入還是鍵盤用戶輸入,區(qū)別在于掃碼槍輸入很快。

 let code = '';
   let lastTime, nextTime;
   let lastCode, nextCode;
   window.document.onkeypress = (e) => {
    if (window.event) { // IE
     nextCode = e.keyCode;
    } else if (e.which) { // Netscape/Firefox/Opera
     nextCode = e.which;
    }
    if (nextCode === 13) {
     if (code.length < 3) return; // 手動(dòng)輸入的時(shí)間不會(huì)讓code的長度大于2,所以這里只會(huì)對(duì)掃碼槍有

     console.log(code); // 獲取到掃碼槍輸入的內(nèi)容,做別的操作

     code = '';
     lastCode = '';
     lastTime = '';
     return;
    }
    nextTime = new Date().getTime();
    if (!lastTime && !lastCode) {
     code += e.key;
    }

    if (lastCode && lastTime && nextTime - lastTime > 30) { // 當(dāng)掃碼前有keypress事件時(shí),防止首字缺失
     code = e.key;
    } else if (lastCode && lastTime) {
     code += e.key;
    }
    lastCode = nextCode;
    lastTime = nextTime;
   }

PS:下面看下js獲取USB掃碼槍數(shù)據(jù)的代碼

前言

找了很多相關(guān)的教程不太好用,汲取各家之長總結(jié)精簡了一下

原理

  1. 掃碼槍掃描到的條形碼每一位會(huì)觸發(fā)一次onkeydown事件
  2. 比如掃描條碼位‘1234567890'的條形碼,會(huì)連續(xù)執(zhí)行10次onkeydown事件
  3. 條碼掃描到最后一位,會(huì)直接觸發(fā)Enter

需要引入jQuery,我這里用的是vue

window.onload = (e)=> {
  document.onkeydown = (e)=> {
  	let nextCode,nextTime = '';
  	let lastTime = this.lastTime;
  	let code = this.code;
    if (window.event) {// IE
      nextCode = e.keyCode
    } else if (e.which) {// Netscape/Firefox/Opera
      nextCode = e.which
    }
    nextTime = new Date().getTime();
    //字母上方 數(shù)字鍵0-9 對(duì)應(yīng)鍵碼值 48-57; 數(shù)字鍵盤 數(shù)字鍵0-9 對(duì)應(yīng)鍵碼值 96-105
    if((nextCode>=48&&nextCode<=57) || (nextCode>=96&&nextCode<=105)){
    	let codes = {'48':48,'49':49,'50':50,'51':51,'52':52,'53':53,'54':54,'55':55,'56':56,'57':57,
			 '96':48,'97':49,'98':50,'99':51,'100':52,'101':53,'102':54,'103':55,'104':56,'105':57
			};
			nextCode = codes[nextCode];
			nextTime = new Date().getTime();
    }
    // 第二次輸入延遲兩秒,刪除之前的數(shù)據(jù)重新計(jì)算
    if(nextTime && lastTime && nextTime-lastTime>2000){
			code = String.fromCharCode(nextCode);
    }else{
    	code += String.fromCharCode(nextCode)
    }
    // 保存數(shù)據(jù)
    this.nextCode = nextCode;
    this.lastTime = nextTime;
    this.code = code;
  	// 鍵入Enter
    if(e.which == 13) {
      // 判斷 code 長度(這里就獲取到條碼值了,以下業(yè)務(wù)自由發(fā)揮)
      	code = $.trim(code)
      if (code.length == 13) {
        this.$message('A類條碼:' + code);
      } else if (code.length == 23) {
				this.$message('B類條碼:' + code);
      } else if (code.length == 0) {
				this.$message('請(qǐng)輸入條碼');
      } else{
      	this.$message('條碼不合法:' + code);
      }
      //鍵入回車務(wù)必清空code值
    	this.code = ''
    	return false;
    }
  }
}

總結(jié)

到此這篇關(guān)于js 獲取掃碼槍輸入數(shù)據(jù)的文章就介紹到這了,更多相關(guān)js 獲取掃碼槍輸入數(shù)據(jù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 微信小程序開發(fā)指南之圖片壓縮解決方案

    微信小程序開發(fā)指南之圖片壓縮解決方案

    在項(xiàng)目開發(fā)過程中遇到一個(gè)需要從小程序上傳圖片的需求,此需求實(shí)現(xiàn)起來并不難,下面這篇文章主要給大家介紹了關(guān)于微信小程序開發(fā)指南之圖片壓縮解決方案的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-08-08
  • D3.js實(shí)現(xiàn)繪制柱狀圖的教程詳解

    D3.js實(shí)現(xiàn)繪制柱狀圖的教程詳解

    這篇文章主要為大家詳細(xì)介紹了如何通過D3.js實(shí)現(xiàn)繪制柱狀圖,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)D3.js有一定的幫助,需要的可以參考一下
    2022-11-11
  • Javascript中的Prototype到底是什么

    Javascript中的Prototype到底是什么

    Javascript也是面向?qū)ο蟮恼Z言,但它是一種基于原型Prototype的語言,而不是基于類的語言。接下來通過本文給大家介紹Javascript中的Prototype到底是啥的相關(guān)知識(shí),感興趣的朋友參考下
    2016-02-02
  • JavaScript 的繼承

    JavaScript 的繼承

    大家都知道,C#中使用的是傳統(tǒng)的類繼承是很簡單,但在JS中,可就沒這么簡單了,因?yàn)樗褂玫氖窃?prototype )繼承,實(shí)現(xiàn)起來相對(duì)復(fù)雜了一點(diǎn)。
    2011-10-10
  • Ionic默認(rèn)的Tabs模板使用實(shí)例

    Ionic默認(rèn)的Tabs模板使用實(shí)例

    這篇文章主要為大家詳細(xì)介紹了Ionic默認(rèn)的Tabs模板使用實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-08-08
  • js圖片延遲加載(Lazyload)三種實(shí)現(xiàn)方式

    js圖片延遲加載(Lazyload)三種實(shí)現(xiàn)方式

    這篇文章主要介紹了js延遲加載(Lazyload)三種實(shí)現(xiàn)方式,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2017-03-03
  • JS獲取后臺(tái)Cookies值的小例子

    JS獲取后臺(tái)Cookies值的小例子

    JS獲取后臺(tái)Cookies值的小例子,需要的朋友可以參考一下
    2013-03-03
  • 文字不間斷滾動(dòng)(上下左右)實(shí)例代碼

    文字不間斷滾動(dòng)(上下左右)實(shí)例代碼

    文字不間斷滾動(dòng)(上下左右)實(shí)例代碼,需要的朋友可以參考一下
    2013-04-04
  • 以BootStrap Tab為例寫一個(gè)前端組件

    以BootStrap Tab為例寫一個(gè)前端組件

    本文以Bootstrap標(biāo)簽頁組件為例,介紹如何編寫或者封裝一個(gè)前端組件,具體示例代碼大家參考下本文
    2017-07-07
  • 淺談regExp的test方法取得的值變化的原因及處理方法

    淺談regExp的test方法取得的值變化的原因及處理方法

    下面小編就為大家?guī)硪黄獪\談regExp的test方法取得的值變化的原因及處理方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-03-03

最新評(píng)論

三亚市| 策勒县| 北海市| 会理县| 隆子县| 福鼎市| 焦作市| 临湘市| 墨脱县| 正蓝旗| 双城市| 观塘区| 津南区| 云阳县| 新密市| 象州县| 荆门市| 蕉岭县| 绥德县| 东宁县| 徐州市| 丹寨县| 磐石市| 陆河县| 白河县| 克什克腾旗| 韶山市| 张家港市| 屯门区| 宁波市| 宁化县| 林州市| 井陉县| 勐海县| 甘孜县| 阳东县| 祁东县| 东乡县| 衢州市| 武威市| 疏勒县|