2016-09-09 6 views
1

Я назначил каждому ученику штрих-код в своих идентификаторах. и im использовать сканер штрих-кода для сканирования своих идентификаторов, чтобы проверить их посещаемость. im используя функцию keyup, но каждый раз, когда я просматривал штрих-код в их ID, функция keyup выполняется дважды.используется функция сканера штрихового кода, выполняемая дважды

<script type="text/javascript"> 


     function loaddelegates($barcode) 
     { 
      var xhttp = new XMLHttpRequest(); 
      xhttp.onreadystatechange = function() { 
       if (this.readyState == 4 && this.status == 200) { 
       document.getElementById("getdel").innerHTML = this.responseText; 
       $("#barcode").focus(); 
       } 
      }; 
      xhttp.open("GET", "mealclient/" + $barcode, true); 
      xhttp.send(); 

      } 

$(function() { 
      $('#barcode').attr('maxlength','13'); 
     $(document).on('keyup','#barcode',function(e) { 
      e.preventDefault(); 
      if ($(this).val().length >= 13) { 
       loaddelegates($(this).val()); 
       return false; 
      } 
     }); 
     }); 

<div class="site-wrapper-inner"> 

    <div class="cover-container"> 

     <div class="masthead clearfix"> 
     <div class="inner"> 
      <h3 class="masthead-brand">PITYLC</h3> 
      <nav> 
      <ul class="nav masthead-nav"> 
      @foreach($meals as $meal) 
       <li class="active"><a href="#">{{$meal->date}}</a></li> 
      @endforeach 
      </ul> 
      </nav> 
     </div> 
     </div> 
     <img src="/img/COVER.png" class="img-responsive" alt="Responsive image"> 

     <div class="inner cover" id = "getdel"> 
     @foreach($meals as $meal) 
     <h1 class="cover-heading" style = "font-weight: Bold">{{strtoupper($meal->meal)}}</h1> 
     @endforeach 
     <div class="form-group"> 
      <label style = "color: #e36c1d">BARCODE</label> 
      <input class="form-control" style="font-size:30px; color: #e36c1d" id = "barcode" autofocus> 
     </div> 
     <div class="form-group"> 
      <label style = "color: #e36c1d">NAME</label> 
      <input class="form-control" style="font-size:30px; color: #e36c1d" > 
     </div> 
     <div class="form-group" > 
      <label style = "color: #e36c1d">ORGANIZATION</label> 
      <input class="form-control" style="font-size:30px; color: #e36c1d" > 
     </div> 
     <div class="form-group"> 
      <label style = "color: #e36c1d">POSITION</label> 
      <input class="form-control" style="font-size:30px; color: #e36c1d"> 
     </div> 
     <div class="form-group"> 
      <label style = "color: #e36c1d">SCHOOL</label> 
      <input class="form-control" style="font-size:30px; color: #e36c1d"> 
     </div> 


     </div> 



    </div> 

    </div> 

</div> 

ответ

3

я мог себе представить, что штрих-код читателя каким-то образом имитируя нажатие клавиши, как вы слушаете для KeyUp. Вероятно, он имитирует два ключа - например. Ctrl + V будет вызывать вашу функцию дважды.

Для отладки этот вопрос я бы рекомендовал добавить

var code = e.keyCode || e.which; 
console.log(code); 

на самом верху KeyUp слушателя. Проверьте вывод консоли. Поэтому, если читатель действительно имитирует сразу два ключа, вы, безусловно, можете игнорировать один из них.

РЕДАКТИРОВАТЬ: Как пишет OP, на консоли дополнительно добавлен еще один код ключа. 13 - код ASCII для CR (возврат каретки).

Так игнорировать этот ключ записи:

$(document).on('keyup','#barcode',function(e) { 
     e.preventDefault(); 
     var code = e.keyCode || e.which; 
     if (code != 13 && $(this).val().length >= 13) { 
      loaddelegates($(this).val()); 
     } 
}); 
+0

его ключ 54 .. какой ключ является то, что –

+0

код ключа 54 является ключевым 6. Было ли это последний номер сканируемого штрих-код? Это называется только один раз? Попробуйте это с помощью нескольких разных штрих-кодов и следите за двумя клавишами сразу –

+0

Последний номер, отсканированный по ключевому коду 13 и 123 –

Смежные вопросы