我在更新面板中有一个文本框:
<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 ......
答案 0 :(得分:1)
当textchanged
属性发生更改时,text
事件将触发,因此单个字符更改将触发事件。
我建议您查看如何填充文本框,以及是否可以一次性将整个条形码编号放入文本框中,这样您只能触发一次事件。
如果在事件处理程序中失败,你可以检查文本的大小,只有当它是正确的字符数时才处理它。
答案 1 :(得分:1)
扫描程序在读完整个代码后可能会抛出 Enter 。在它旁边放一个提交按钮或捕获键13。
答案 2 :(得分:1)
由于您的条形码阅读器在客户端计算机上,当您致电__dopostback
时,浏览器会再次加载同一页面,在此期间,条形码阅读器模拟的所有键盘事件都不会传送到文本框。
因此,只有当文本框中包含13个字符时才需要进行回发。
你可以修改你的javascript来做这样的事情:(不是真正的javascript)
if (this.value.length == 13) __dopostback(this);