我有一个条形码扫描器,它读取条形码的字符串并显示在活动文本框中。条形码或标准长度也没有一致的结束字符(我有5种不同的长度尺寸.16,17,18,19,20)。我需要从扫描数据中提取值。所以提取值也取决于条形码长度。
那么,当读入WHOLE字符串时,我将如何开始触发方法?
我使用php和ajax来做这件事。
$(document).ready(function()
{
$("#bcode").focus();
//prevents autocomplete in some browsers
$("#bcode").attr('autocomplete', 'off').keyup(function(event)
{
var name = $("#bcode").val();
$("#status").empty();
if(name.length > 17 ) `// need to check all possible length values like this`
{
selectAll();
$("#status").html('<img align="absmiddle" src="images/loading.gif" /> Checking availability...').show();
$.ajax({
type: "POST",
url: "namecheck.php",
data : "bcode=" + name,
success: function(msg)
{
$("#status").html(msg).show();
}
});
}
else
{
$("#status").html('').addClass('err').show();
}
});
});
答案 0 :(得分:2)
我用卡片刷卡做了一些工作,那里也有类似的挑战。数据快速突发,但没有一致的“数据结束”字符串被发送。解决方案是使用setTimeout
并等待 - 当输入停止时,然后激活处理代码。
根据您的硬件,您想要做的等待量会有所不同。尝试使用此代码调整等待时间,只需调整duration
的{{1}}参数即可。我已经在500毫秒开始了它 - 这对于卡片刷子非常有效。如果我的代码中有任何轻微的摆动,请原谅我 - 我不是一个jQuery人:)
setTimeout
答案 1 :(得分:1)
是否需要成为文本区域?
我使用的最后一个条形码阅读器总是以换行符结束。如果您输入<input type="text"/>
,则返回字符可能会尝试提交表单,您可以使用onSubmit捕获事件并处理输入。
答案 2 :(得分:0)
尝试按间隔代码
观察字段实施例
setInterval(function() {
var value = $("#code").val(),
prev_value = $("#code").attr("prev_value");
if (prev_value == value) {// compare with prevent value for detecting canges
console.log("value is not changed");
return;
}
//if (value.length < 17) {
//exeption
// or reset value $("#code").val(prev_value);
//return;
//}
if (value[value.length-1] == "\n") {// check last symbol
console.log(value);// Do something with you code eg send by AJAX
}
$("#code").attr("prev_value", value); // save current value for compare later
}, 1000 );