jQuery keypress() - получить все символы до нажатия Enter

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

функция

    $(document).keyup(function(e) {
      var barcode = e.which;
      // the barcode should be without the enter at the end

      if (e.keyCode == 13){
         // stop reading 
      }
    });

Я совершенно новичок в javascript и jQuery - как вы, наверное, уже заметили.

Спасибо за любую помощь!

Обновить

Это сработало для меня:

    $(function(){

            var barcode = '';

            var getCode = function (e) {
                if (e.which != 13) {
                    barcode += String.fromCharCode(e.which);
                } else {
                    $(document).unbind('keyup', getCode);
                    console.log(barcode);
                }
            };

            $(document).on('keypress', getCode);

            // Barcode ausgeben


            // Produktinfos ausgeben
            $('span#articleID').text('articleID');
            $('span#productName').text('productName');

        });

Спасибо всем!!

4 ответа

Решение

Создайте функцию для привязки по ключу. Когда нажата кнопка ввода, просто отсоедините функцию, чтобы убедиться, что код больше не изменится.

var barcode = '';

var getCode = function (e) {
    if (e.which != 13) {
        barcode += e.which;
    } else {
        $(document).unbind('keyup', getCode);
        console.log(barcode);
    }
};

$(document).on('keyup', getCode);

Вы можете вместо этого удалить символ новой строки (\n). В этом случае вы будете искать:

$(document).keyup(function(e) {
  //check for different types of newlines
  var barcode = e.which.replace(/(\r\n|\n|\r)/gm,"");

  if (e.keyCode == 13){
     // stop reading 
  }
});

Может быть, что-то вроде этого:

var BarCodeStr='';

document.onkeydown=function(e){

if (e.keyCode===13) {ProcessBarCodeStr(); BarCodeStr='';} else {BarCodeStr=BarCodeStr+e.keyCode;}

}

Вы ищете это?

$(document).keyup(function (e) {
    
     if (e.keyCode == 13) {
         console.log("Stopped");
         e.preventDefault();
         return false;
     } else {
        var barcode = e.which;
     // the barcode should be without the enter at the end
         $("#dvStatus").append("</br> " + e.key + " Key should be logged");
     }
 });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="dvStatus">
  </div>

Другие вопросы по тегам