2012-04-27 105 views
6

我的網站(MVC3,C#)和條形碼閱讀器有這個問題。 在我的表單中我有這樣的事情:使用條形碼閱讀器防止Chrome瀏覽器打開下載窗口

<ajax form....> 

<input type=text /> 

<div id=list> 
</div> 

</form> 

和輸入充滿條形碼閱讀器和自動提交表單與AJAX,填充用id =列表中的DIV。 我的問題是,與鉻和即,在文本submited後,下載窗口出現在鉻和收藏夾窗口出現在即。我想這是因爲條形碼閱讀器在文本中嵌入了[CR] [LF],並打開這些窗口。我認爲條形碼閱讀器在某個時刻插入了ctrl-j,因爲該組合在Chrome中打開下載窗口,在ie中打開收藏夾,但是Firefox下載窗口不打開(也是ctrl-j)。

我不想告訴我的客戶配置條形碼閱讀器,所以我的網頁的作品,所以我想在JavaScript的sollution可能修復這個問題。

謝謝!!!

回答

5

我發現this鏈接,但唯一的解決辦法是改變你的掃描儀的默認字符......我不知道我可以改變我的,儘管如此,像你一樣,我也在尋找一個瀏覽器相關的修復程序。 。也許是javascript。我會嘗試處理與JavaScript字符,以防止發生...如果我有任何成功,我會盡力記住回到這裏,並告訴你hehehehehe

我認爲這解決了這個問題....

$(document).ready(function(){ 
    $("#input").keydown(function(e){ 
     if(e.which==17 || e.which==74){ 
      e.preventDefault(); 
     }else{ 
      console.log(e.which); 
     } 
    }) 
}); 

還是讓我知道他的作品對你來說是否..請確保您清空緩存太...

+0

我的條形碼包含'-'這是鍵代碼173和它的屏幕分割成單個列模式,謝謝@Felipe阿爾梅達 – Tiger 2015-11-18 09:33:31

+1

這也將阻止複製粘貼命令我加入小修復到它,它只會塊ctrl + j var prevKey =''; \t \t $( 「輸入」)。KEYDOWN(函數(e)中{ \t \t如果(e.which == 74 && prevKey == '17'){ \t \t的console.log( '按Ctrl + J occered' ); \t \t e.preventDefault(); \t \t} \t \t \t如果(e.which == 17){ \t \t \t prevKey = 17; \t \t}否則{ \t \t \t prevKey =''; \t \t} \t \t \t}); – 2016-06-11 12:28:11

0

我的掃描儀(Intermec的SR30)設置了條形碼後,應用3個新行字符。我通過打開Vim找到了這個,然後插入,然後掃描條形碼。然後我cat'ed文件到OD -ax:

0000000 3 1 2 2 1 0 9 9 9 4 8 5 2 8 nl nl 
     3133 3232 3031 3939 3439 3538 3832 0a0a 
0000020 nl 
      000a 
0000021 

我可以捕獲「NL的同:

$(document).ready(function(){ 
    $("#barcode").keypress(function(e){ 
     console.log('"' + e.keyCode + '"\n'); 
     if(e.keyCode == 13){ 
      e.preventDefault(); 
     } 
    }) 
}); 

但下載窗口打開的事件(Ctrl + J鍵從鍵盤)在瀏覽器打開頁面之前被瀏覽器淹沒。這個問題也困擾着Firefox 30.0。

1

此代碼對我的作品

$(document).ready(function(){ 
    $("#input").keydown(function(e){ 
     if(e.which==17 || e.which==74 || e.keyCode == 13){ 
      e.preventDefault(); 
     } 
    }) 
}); 
0

經批准的答案被阻塞CTRL和J鍵的代碼。 這將阻止只CTRL + J

$("#barcode").keypress(function(event){ 
    if(event.keyCode == 74 && event.ctrlKey){ 
     event.preventDefault(); 
    } 
}); 
0

以下代碼將無法正常工作。因爲如果條形碼值中有'J'字符,您將無法獲得正確的結果。我們嘗試添加e.ctrlkey控件,但這次只會檢索條碼的一個字符。通過js解決方案似乎很難。也許最好的選擇是改變掃描儀設置。

$(document).ready(function(){ 
    $("#input").keydown(function(e){ 
     if(e.which==17 || e.which==74 || e.keyCode == 13){ 
      e.preventDefault(); 
     } 
    }) 
}); 
0

這適用於我。

<script> 
    document.addEventListener('keydown', function(event) { 
    if(event.keyCode == 13 || event.keyCode == 17 || event.keyCode == 74) 
     event.preventDefault(); 
    }); 
</script> 
相關問題