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

时间:2013-04-04 20:53:26

标签: c# asp.net textchanged

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

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

3 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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

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

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

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