JQuery尝试通过扫描将焦点从文本输入字段中取出

时间:2017-09-05 15:50:02

标签: php jquery barcode .post

我正在处理一个小项目,经过长时间的文档没有结果后,我决定寻求帮助。 我正在研究的是php和jquery中基于分配条形码的系统。 您将在代码中看到的分配过程包括四次扫描,第一次扫描以打开分配会话,第二次扫描订单,第三次扫描位置货架,第四次通过重新扫描订单获取确认窗口(步骤bug是)。 在打开确认窗口之前,最后一次扫描应该模糊表单的所有输入字段。这种方法有一段时间了,但随后代码开始将焦点放在最后选择的输入字段上,由此弄乱数字。

这是扫描仪检测功能,具有作为回调功能的四个步骤来跟踪扫描扫描。(它包含在document.ready功能中,我只是没有复制整个代码)

   $(document).scannerDetection({
   timeBeforeScanTest: 200, // wait for the next character for upto 200ms
   startChar: [120], // Prefix character for the cabled scanner (OPL6845R)
   endChar: [13], // be sure the scan is complete if key 13 (enter) is 
   detected
   avgTimeByChar: 40, // it's not a barcode if a character takes longer than 
   40ms
   onComplete: function(barcode, qty){
    // main callback function
      console.log(barcode);
      order=barcode;
        if($("*:contains('ADD YOUR ORDER')").length>0){
          count++;
          if(count==1){
          console.log('First step');
          $("#allocation #ordNum").focus();
          var lineOrd=$("#allocation #ordNum").closest("tr");
          $(lineOrd).addClass("focus");

        }
          if(count==2){
            console.log('Second Step');
          if($("#allocation #ordNum").val()) {
            var matchItem=/^\d+$/;
            ord=$("#allocation #ordNum").val();
            if(matchItem.test(ord)===false){
              alert("Give a valid order number!");
              window.location.href=window.location.href;
            }
            $(".focus").removeClass("focus");
            $.post("ajax.inc.php",
            {action:"scanN",order:ord}).done(function(data){

            dataa=$(data).text();
            if(dataa.indexOf("1.)")>=0){
            document.getElementById("soundEffect").play();
            alerting=true;
            alert(dataa);
          }
            });
            console.log("there is something: "+ord);
            $("#allocation #location").focus();
            var lineLoc=$("#allocation #location").closest("tr");
            $(lineLoc).addClass("focus");

          }else{
            alert('Give a valid ordernumber.');
            count--;
          }
        }

              if(count==3){
                console.log('Third step');
                if($("#allocation #location").val()){
                  loc=$("#allocation #location").val();
                  $(":text").blur(); //the line what stops working
                  console.log('location has value');
                  $("#allocation #update").focus();
                  //var matchItem2=/^\s?[A-B]\s?[1-6]\s?[A-E]\s?[1-6]\s?$/;
                  var matchItem2=/^\s?[A-B]\s?[1-6]\s?[A-E]\s?[1-6]\s*$/;
                  if(matchItem2.test(loc)===false){
                    alert("Give a valid location!");
                    window.location.href=window.location.href;
                  }

                }
              }


                if(count==4){
                  console.log('Forth step');
                  $(".focus").removeClass("focus");
                if(barcode===ord){
                  var confi=confirm('Order '+ord+' added to location '+loc);
                  if(confi==true){
                    $.post("ajax.inc.php",
    {action:"scan",order:ord,location:loc,thestat:thestat})
    .done(function(data){
                      console.log('Order added');
                      $(".container").append(data);
                        setTimeout(function(){
                          window.location.href=window.location.href;
                        },500);
                    //window.location.href=window.location.href;
                    console.log('confirmed');
                  });
                }
                  if(confi==false){
                    window.location.href=window.location.href;
                    console.log('not confirmed');
                  }

                }else{
                  alert('Allocation is confirmed by rescan of the order');
                  count--;
                }

              }

    }


        if($("h2.scan:contains('SCAN TO SEARCH ORDER')").length>0){
          $(".container #locations").remove();
          $(".container h4#process").remove();
          console.log('Scanning Picknote');

       $.post("ajax.inc.php{action:"scanN",order:order}).done(function(data)
         {
            $(".container").append(data);
          });
      }
      if($("h2.scan:contains('SCAN TO PROCESS ORDER')").length>0){
            console.log('Delete order');
            console.log('order:'+order);
                $.post("ajax.inc.php,
                {action:"delete",order:order}).done(function(data){
                    $(".container #processed").append(data);
                    $(".container #locations .forProcess 
                span#"+order).slideUp();
                });
             }

             }
               });

任何帮助都可能有所帮助。我想要实现的是,一旦扫描位于数字3,就可以从窗体上的每个输入字段中聚焦。即使实现了它,由于某种原因,它在一定时间后停止了而。 谢谢。

1 个答案:

答案 0 :(得分:0)

请检查此行:

$.post("ajax.inc.php{action:"scanN",order:order})

我认为它应该是:

$.post("ajax.inc.php",{action:"scanN",order:order})