- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在研究条形码扫描仪。我使用的条形码扫描器是即插即用类型,无论您将光标放在何处,它都会自动扫描代码。但我想要的是,每次我的扫描仪读取代码时,我是否可以将它扫描到网页上的特定文本框
例如,如果我的表格看起来像这样
<input type="text" name="txtItem" id="txtItem" class="m-wrap w-120" tabindex="6">
<input type="text" name="itemId" id="itemId" class="m-wrap w-120" tabindex="6">
<input type="text" name="itemName" id="itemName" class="m-wrap w-120" tabindex="6">
<input type="text" name="itemQty" id="itemQty" class="m-wrap w-120" tabindex="6">
所以每次我扫描代码时,无论我当前的焦点在哪里,它都应该始终出现在 txtitem
文本框中。
有人可以指导我或帮助我在这里找到解决方案吗??
最佳答案
一些条形码扫描仪就像另一个输入设备一样。除非您使用计时器来监控输入信息的速度,否则表单无法区分键盘输入的信息与扫描仪输入的信息之间的区别。
一些扫描器将值“粘贴”到焦点控件中 - 其他扫描器发送每个单独的击键。
以下 JSFiddle 能够检测在单个控件上单独发送字符时何时发生输入:
http://jsfiddle.net/PhilM/Bf89R/3/
您可以对其进行调整以使其成为整个表单的委托(delegate),并从输入它的控件中删除输入并将其放入正确的表单中。
fiddle 的测试 html 是这样的:
<form>
<input id="scanInput" />
<button id="reset">Reset</button>
</form>
<br/>
<div>
<h2>Event Information</h2>
Start: <span id="startTime"></span>
<br/>First Key: <span id="firstKey"></span>
<br/>Last Ley: <span id="lastKey"></span>
<br/>End: <span id="endTime"></span>
<br/>Elapsed: <span id="totalTime"></span>
</div>
<div>
<h2>Results</h2>
<div id="resultsList"></div>
</div>
示例 fiddle 的 Javascript 是:
/*
This code will determine when a code has been either entered manually or
entered using a scanner.
It assumes that a code has finished being entered when one of the following
events occurs:
• The enter key (keycode 13) is input
• The input has a minumum length of text and loses focus
• Input stops after being entered very fast (assumed to be a scanner)
*/
var inputStart, inputStop, firstKey, lastKey, timing, userFinishedEntering;
var minChars = 3;
// handle a key value being entered by either keyboard or scanner
$("#scanInput").keypress(function (e) {
// restart the timer
if (timing) {
clearTimeout(timing);
}
// handle the key event
if (e.which == 13) {
// Enter key was entered
// don't submit the form
e.preventDefault();
// has the user finished entering manually?
if ($("#scanInput").val().length >= minChars){
userFinishedEntering = true; // incase the user pressed the enter key
inputComplete();
}
}
else {
// some other key value was entered
// could be the last character
inputStop = performance.now();
lastKey = e.which;
// don't assume it's finished just yet
userFinishedEntering = false;
// is this the first character?
if (!inputStart) {
firstKey = e.which;
inputStart = inputStop;
// watch for a loss of focus
$("body").on("blur", "#scanInput", inputBlur);
}
// start the timer again
timing = setTimeout(inputTimeoutHandler, 500);
}
});
// Assume that a loss of focus means the value has finished being entered
function inputBlur(){
clearTimeout(timing);
if ($("#scanInput").val().length >= minChars){
userFinishedEntering = true;
inputComplete();
}
};
// reset the page
$("#reset").click(function (e) {
e.preventDefault();
resetValues();
});
function resetValues() {
// clear the variables
inputStart = null;
inputStop = null;
firstKey = null;
lastKey = null;
// clear the results
inputComplete();
}
// Assume that it is from the scanner if it was entered really fast
function isScannerInput() {
return (((inputStop - inputStart) / $("#scanInput").val().length) < 15);
}
// Determine if the user is just typing slowly
function isUserFinishedEntering(){
return !isScannerInput() && userFinishedEntering;
}
function inputTimeoutHandler(){
// stop listening for a timer event
clearTimeout(timing);
// if the value is being entered manually and hasn't finished being entered
if (!isUserFinishedEntering() || $("#scanInput").val().length < 3) {
// keep waiting for input
return;
}
else{
reportValues();
}
}
// here we decide what to do now that we know a value has been completely entered
function inputComplete(){
// stop listening for the input to lose focus
$("body").off("blur", "#scanInput", inputBlur);
// report the results
reportValues();
}
function reportValues() {
// update the metrics
$("#startTime").text(inputStart == null ? "" : inputStart);
$("#firstKey").text(firstKey == null ? "" : firstKey);
$("#endTime").text(inputStop == null ? "" : inputStop);
$("#lastKey").text(lastKey == null ? "" : lastKey);
$("#totalTime").text(inputStart == null ? "" : (inputStop - inputStart) + " milliseconds");
if (!inputStart) {
// clear the results
$("#resultsList").html("");
$("#scanInput").focus().select();
} else {
// prepend another result item
var inputMethod = isScannerInput() ? "Scanner" : "Keyboard";
$("#resultsList").prepend("<div class='resultItem " + inputMethod + "'>" +
"<span>Value: " + $("#scanInput").val() + "<br/>" +
"<span>ms/char: " + ((inputStop - inputStart) / $("#scanInput").val().length) + "</span></br>" +
"<span>InputMethod: <strong>" + inputMethod + "</strong></span></br>" +
"</span></div></br>");
$("#scanInput").focus().select();
inputStart = null;
}
}
$("#scanInput").focus();
上面的代码不支持复制/粘贴,但在我们的情况下这不太可能发生。
关于javascript - 将条形码扫描到特定的文本框中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16296342/
我正在为一个网站开发应用程序(我无法访问该网站)。 所以我想做以下事情: 那么如何将文本数据从 Android View 传递到网页中的文本框并捕获来自网站的响应? 我试图记住这一切我无法访问任何网站
我有一个文本框,里面有一个很长的 url。我想做的是,当用户点击主页按钮时,我希望光标移动到文本框的开头。 我希望这是正常行为,但事实并非如此,当文本框内的文本很长时,我点击回家,它会转到文本框中当前
我正在做一个WPF登录界面。在我的登录面板中,我有一个登录 TextBox和 PasswordBox .如下图第一张所示,登录文本框中有一个小人类标志,密码框中有一个锁。我将图像设置为文本框背景,然后
是否有任何简单的方法可以使文本在文本框中居中?我正在寻找一些内置函数,但什么也没找到。 最佳答案 将 TextAlignment 属性设置为 Center: 关于wpf - 文本框 - 水平文本居中
是否可以使用 System.Windows.Forms.TextBox(或任何其他方法)输入可随后转换为安全字符串的文本?我希望能够获取输入的值,将其转换为安全字符串并将其写入一个文件,然后可以在需要
是否可以使用 System.Windows.Forms.TextBox(或任何其他方法)输入可随后转换为安全字符串的文本?我希望能够获取输入的值,将其转换为安全字符串并将其写入一个文件,然后可以在需要
我想将纬度和经度的值返回到我的 EditText 中,我已经能够使用 Toast 来做到这一点,但没有通过 实现它>编辑文本。请帮忙 // EditText latEditText =
我是Jquery新手,其实我对JQuery的使用知识是0。我正在尝试使用 JQuery 来实现某些功能。 我有一个带有 iframe 的 html 页面。 iframe 页面中有一个表单和一个文本框。
我正在尝试在 Button 的事件处理程序中访问我在 C# 中动态创建的 TextBox。 void MainFormLoad(object sender, EventArgs e)
我有一个搜索栏,当我打开搜索栏时,我想立即开始输入,不想点击文本框。 我尝试使用 myTextBoxId.click()(因为当您单击它时,您可以开始输入)但它不起作用。 最佳答案 你必须 docum
我还没有找到好的解决方案:我有一个文本框,用户需要能够在其中输入特定 信息。例如,命令可能是“9030 OUT FU [1234 TEST]”。我需要“擦洗”这个文本框以确保数据是以这种格式输入的(不
我有一个 Java 应用程序,您可以在其中将字符串输入文本框,点击加密,它会在单独的文本框中显示加密的字符串。我将为此使用 AES 加密。问题是我无法让加密文本按字节显示,但文本框不会显示字节(仅采用
我已经浏览了您庞大的问题数据库,但似乎没有找到答案。我在将文本换行时遇到问题 - 即使之前的行上仍有空间。这是代码: p1 { border-left: 6px solid blue; bac
所以我正在尝试创建“看板/待办事项列表”网站,但我在触发添加按钮时遇到了问题。我试图触发“添加”按钮以打开用户输入框。所以我有这个创建一个小框的“添加”按钮。但我无法弄清楚如何在该框中添加一个小区域,
我有一个文本框,应该只接受浮点值。它不应该允许任何其他值。怎么做。我在 HTML 中完成了此操作。 Weight 但是,它不起作用?如何做到这一点。 最佳答案 // remo
当用户点击文本框时,如何不显示出现在文本框下方的已填充值 最佳答案 将这个属性放在你的文本框中 autocomplete="off" 关于javascript - 文本框 - 如何不显示已填充的值,我
JavaScript: function resize(elem){ if(!elem.value.length) elem.size=1; else elem.size=elem.value
在我的代码下面,我需要它具有相同的宽度和高度,但有多行“从第一行开始”,当到达行尾时转到新行,只有 120 个字符,就像我用“Enter短信”当您向右单击时隐藏,但我需要它为灰色。 最佳答案 您可以使
我有一个问题,我必须创建一种方法来搜索显示在多个文本框 (lblResult.Text) 中的选定文本文件的内容。使用简单的搜索算法:搜索用户输入的整个搜索词。例如,如果用户输入“hello”,则只搜
我正在尝试对文本框使用 SelectionStart 和 SelectionLength 属性。它没有效果,但也没有错误。它实际上是后台工作程序 ProgressChanged 方法的一部分,但我已经
我是一名优秀的程序员,十分优秀!