7

我的网站(MVC3、C#)和条形码阅读器有这个问题。在我的表格中,我有这样的东西:

<ajax form....>

<input type=text />

<div id=list>
</div>

</form>

输入由条形码阅读器填充,并自动提交带有 ajax 的表单,用 id = list 填充 div。我的问题是,使用 chrome 和 ie,在提交文本后,chrome 中会出现下载窗口,而 ie 中会出现收藏夹窗口。我想这是因为条形码阅读器在文本中插入了 [CR][LF] 并打开了这些窗口。我认为条形码阅读器在某个时刻插入了 ctrl-j,因为该组合打开了 chrome 中的下载窗口和 ie 中的收藏夹,但是使用 Firefox 时,下载窗口没有打开(并且也是 ctrl-j)。

我不想告诉我的客户配置条形码阅读器以便我的页面工作,所以我想要一个 javascript 中的解决方案也许可以解决这个问题。

谢谢!!!

4

6 回答 6

5

我找到了此链接,但唯一的解决方案是更改扫描仪的默认字符...我不确定我是否可以更改我的,所以像您一样,我也在寻找与浏览器相关的修复程序..也许是 javascript。我会尝试用 javascript 处理字符以防止这种情况发生......如果我有任何成功,我会试着记住回到这里告诉你 hehehehehe

我认为这可以解决问题....

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

让我知道他是否也适合你……确保你也清空缓存……

于 2012-07-07T21:43:26.243 回答
1

这段代码对我有用

$(document).ready(function(){
    $("#input").keydown(function(e){
        if(e.which==17 || e.which==74 || e.keyCode == 13){
            e.preventDefault();
        }
    })
});
于 2015-05-07T20:46:48.983 回答
0

我的扫描仪 (Intermec SR30) 设置为在条形码后应用 3 个换行符。我通过打开 Vim,插入,然后扫描条形码找到了这个。然后我将文件添加到 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's:

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

但是下载窗口打开事件(键盘上的 Ctrl+j)在它到达打开的页面之前被浏览器吞掉了。这个问题也困扰着 Firefox 30.0。

于 2015-03-11T18:33:13.177 回答
0

已批准答案上的代码阻止了 CTRL 和 J 键。这只会阻止 CTRL + J

$("#barcode").keypress(function(event){
    if(event.keyCode == 74 && event.ctrlKey){
        event.preventDefault();
    }
});
于 2017-05-02T11:31:13.747 回答
0

下面的这段代码不起作用。因为如果条形码值中包含“J”字符,您将无法获得正确的结果。我们尝试添加 e.ctrlkey 控件,但这次只能检索到条形码的一个字符。通过js解决似乎很难。也许最好的选择是更改扫描仪设置。

$(document).ready(function(){
    $("#input").keydown(function(e){
        if(e.which==17 || e.which==74 || e.keyCode == 13){
            e.preventDefault();
        }
    })
});
于 2017-07-18T09:45:45.480 回答
0

这对我有用。

<script>
  document.addEventListener('keydown', function(event) {
    if( event.keyCode == 13 || event.keyCode == 17 || event.keyCode == 74 )
      event.preventDefault();
  });
</script>
于 2018-03-07T07:16:57.017 回答