0

我在更新面板中有一个文本框:

<asp:TextBox ID="txtInsert" 
             runat="server" Font-Size="Large" MaxLength="13" 
             Width="150px" onkeyup="doPostBack(this);" AutoPostBack="True"
             OnTextChanged="txtInsert_TextChanged"></asp:TextBox>

这个文本框应该通过扫描条形码获得值。所有条形码都有 13 位数字。在 txtInsert_TextChanged 方法中,我检查是否在表格内扫描的值并显示一条消息并删除文本框值。

问题是有时它只能读取 1 个字符或 4 个字符,有时我有 13 个数字,但它们是由 2 个条码组合而成的。

基本上我认为我必须以某种方式增加按键时间,因为它只读取部分条形码,然后将其与第二个条形码读取结合......

顺便说一句:doPostBack(this) 方法在这里:

<script type="text/javascript">
    function doPostBack(o) {
        __doPostBack(o.id, '');
    }
</script>

有任何想法吗 ?

PS:扫描仪最后没有输入 ENTER ......

4

3 回答 3

1

textchanged事件将在text属性更改时触发,因此单个字符更改将触发该事件。

我建议您检查一下您是如何填充文本框的,以及您是否可以切换到一次性将整个条形码编号放入文本框中,这样您只需触发一次事件。

如果在事件处理程序中失败,您可以只检查文本的大小,并且仅在字符数正确时处理它。

于 2013-04-04T20:55:27.510 回答
1

Enter扫描仪在读取整个代码后可能会抛出一个。在它旁边放一个提交按钮或捕获键 13。

于 2013-04-04T21:02:39.953 回答
1

由于您的条形码阅读器在客户端计算机上,当您调用__dopostback浏览器时,再次加载相同的页面,并且在此期间,条形码阅读器模拟的所有键盘事件都不会传输到文本框。

因此,只有在文本框中有 13 个字符时才需要进行回发。

您可以修改您的 javascript 以执行以下操作:(不是实际的 javascript)

if (this.value.length == 13) __dopostback(this);
于 2013-04-04T21:04:19.873 回答