输入数据后立即捕获和处理数据

时间:2018-06-06 11:34:37

标签: javascript c# jquery asp.net-core

寻找有关处理以下问题的好方法的建议。

需要快速输入表单才能接收扫描webform应用。这将收集一个接一个地从包裹上扫描的条形码。

扫描将从蓝牙扫描仪进入输入字段。 扫描完成后,扫描仪将插入CR。

此时我只想捕获数据并将其传递到控制器进行处理,清除该字段并立即将控制返回到网页以进行下一次扫描。

最大的两个问题是:

  1. 速度 - 它必须快速进行实时扫描。
  2. 始终将输入字段保持为焦点,以便在输入时显示焦点 扫描它们不在屏幕上的其他字段中。它们将从输入字段开始,我只需要确保它们在每次扫描后立即返回到它。
  3. 关于如何最好地处理的任何想法?

    这是我的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);
        });
    })
    

1 个答案:

答案 0 :(得分:1)

您应该使用AJAX调用来确保页面没有完全重新加载,而不是执行完整的回发。

以下是一个如何执行此操作的示例(未经测试,可能有拼写错误):

change

请注意,这假设设备实际上会立即粘贴整个数据。如果您发现事件过于频繁,则需要围绕notificationArray事件实施一些限制。