如何讓焦點始終固定在特定文本框

沒耐心的朋友,能夠直接看代碼。javascript

最近在作一個關於收銀臺的項目,其中有一個需求,是掃碼槍掃描支付碼進行支付。掃碼槍觸發的事件,實際上是一個keyup enter事件,要捕獲到這個事件,必須將焦點定在支付碼輸入框內才能夠。java

inputEle=document.getElementById('focusInput');

inputEle.focus();

inputEle.onblur=function(){
  inputEle.focus();
};

一開始的時候,定義焦點在文本框,當文本框失去焦點的時候從新定焦在文本框。很簡單的方法,就實現了固定焦點的要求。code

後來這個頁面上又多了搜索框和商品列表,那麼,當焦點在其餘文本框的時候,如何判斷使其能正常輸入呢?事件

起初,我仍是按上面方法去作,卻發現,鼠標不管如何點擊,document.activeElement(當前焦點坐在元素)始終是body元素。這樣,就沒法判斷,焦點是否在文本框。因而我想到了用定時器來作,代碼以下:ip

var focus=function(){
  setTimeout(function(){
    let activeElement=document.activeElement;
    if(activeElement.type!=='text'){
      inputEle.focus();
    }
    focus();
  },60);
}

focus();

定時器每隔60ms檢查一次,當發現焦點不在文本框裏,則定焦到最初的文本框,不然不改變焦點。get

用上面兩種方法,基本上就能夠知足全部固定焦點的狀況了。input

相關文章
相關標籤/搜索