扫描文本框内的条形码并触发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>
有什么想法吗?
由于您的条形码阅读器在客户端计算机上,当您调用__dopostback
时,浏览器再次加载相同的页面,并且在此期间,条形码阅读器模拟的所有键盘事件都不会传输到文本框。
所以只有当你的文本框中有13个字符时,你才需要回发。
你可以这样修改你的javascript:(不是真正的javascript)
if (this.value.length == 13) __dopostback(this);
当text
属性被改变时,textchanged
事件将被触发,因此单个字符的改变将触发该事件。
我建议检查一下你是如何填充文本框的,如果你可以切换到把整个条形码编号一次进入文本框,这样你只触发一次事件。
如果不能,在事件处理程序中,你可以检查文本的大小,只有当它是正确的字符数时才处理它
扫描器在读取整个代码后可能会抛出Enter。在它旁边放一个提交按钮或捕获键。