扫描文本框内的条形码并触发textboxChanged asp.net

本文关键字:textboxChanged asp net 条形码 文本 扫描 | 更新日期: 2023-09-27 18:07:32

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

<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>

有什么想法吗?

扫描文本框内的条形码并触发textboxChanged asp.net

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

所以只有当你的文本框中有13个字符时,你才需要回发。

你可以这样修改你的javascript:(不是真正的javascript)

if (this.value.length == 13) __dopostback(this);

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

我建议检查一下你是如何填充文本框的,如果你可以切换到把整个条形码编号一次进入文本框,这样你只触发一次事件。

如果不能,在事件处理程序中,你可以检查文本的大小,只有当它是正确的字符数时才处理它

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