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>