2017-09-05 3 views
0

Je travaille sur un petit projet, et après une longue documentation sans résultat, j'ai décidé de demander de l'aide. Ce sur quoi je travaille est un système à base de codes-barres d'allocation en php et jquery. Le processus d'allocations, comme vous le verrez dans le code, comprend quatre analyses, la première pour ouvrir la session d'allocation, la deuxième pour analyser la commande, la troisième pour analyser la position et la quatrième pour obtenir la confirmation. le bug est). La dernière analyse censée effacer tous les champs de saisie du formulaire avant d'ouvrir la fenêtre de confirmation. Cela fonctionne pendant un certain temps, mais le code commence à garder le focus sur le dernier champ de saisie sélectionné, ce qui perturbe les chiffres.JQuery essayant d'enlever le focus des champs de saisie de texte par un balayage

C'est la fonction de détection du scanner ayant comme fonction de rappel les quatre étapes à suivre balayage par balayage. (Il est enveloppé dans une fonction document.ready, je viens de ne pas copier le code complet)

$(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(); 
       }); 
      } 

      } 
       }); 

Toute aide peut être utile.Ce que je veux réaliser est, une fois que l'analyse est au numéro 3, se concentrer sur chaque champ de saisie sur le formulaire. Même si un a atteint, pour une raison quelconque il a cessé de le faire après un certain temps. Merci.

Répondre

0

S'il vous plaît vérifier cette ligne:

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

Je pense qu'il devrait lire:

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

Merci Colin pour l'avis, qui était erreur de copier coller, le coma est là. Je pense que c'est peut-être le problème à cause de la fenêtre d'alerte. Tout jusqu'au point où la fenêtre d'alerte a son rôle. – domjanzsoo

+0

C'est un très bon point. Une alerte va mettre l'accent sur les boutons dans l'invite. Peut-être qu'après l'alerte, le focus sur l'entrée sera-t-il utilisé avec .focus()? – Colin