寻找有关处理以下问题的好方法的建议。
需要快速输入表单才能接收扫描webform应用。这将收集一个接一个地从包裹上扫描的条形码。
扫描将从蓝牙扫描仪进入输入字段。 扫描完成后,扫描仪将插入CR。
此时我只想捕获数据并将其传递到控制器进行处理,清除该字段并立即将控制返回到网页以进行下一次扫描。
最大的两个问题是:
关于如何最好地处理的任何想法?
这是我的HTML:
<input type="text"
id="barcode"
name="barcode"
value=""
onchange="location.href='@Url.Action("scanned", "receiveScan")?barcode=' + $('#barcode').val()"><br>
这是控制器动作:
public ActionResult scanned(string barcode)
{
//code to process goes here
return Ok();
}
之后,它会将网页重置为空白页。
相反,我需要做的只是将输入字段留空并将焦点放回原点。
我确实通过将控制器修改为:
来实现它 public ActionResult scanned(string barcode)
{
var test = barcode;
//code to process goes here
return RedirectToAction("receiveScan", "home");
}
但有人指出,重新发布整个页面并不是一个好主意。 我会尽快回答下面的解决方案之一。
感谢您的帮助,以下是有效的代码 -
$('#textArea1').val('Scans - ');
$(function () {
$("#barcode").on("change", function (e) {
// get the current value
var barcode = $('#barcode').val();
// if there's no text, ignore the event
if (!barcode) {
return;
}
// clear the textbox
$("#barcode").val("");
// var holdit = $('#textArea1').val();
$('#textArea1').val($('#textArea1').val() +' '+ barcode);
// post the data using AJAX
$.post('@Url.Action("scanned", "receiveScan")?barcode=' + barcode);
});
})
答案 0 :(得分:1)
您应该使用AJAX调用来确保页面没有完全重新加载,而不是执行完整的回发。
以下是一个如何执行此操作的示例(未经测试,可能有拼写错误):
change
请注意,这假设设备实际上会立即粘贴整个数据。如果您发现事件过于频繁,则需要围绕notificationArray
事件实施一些限制。