我正在捕獲條形碼掃描器的輸入(它像鍵盤輸入一樣)並且效果很好,但目前我無法訪問條形碼掃描器並需要測試我的代碼,所以我需要模擬條碼掃描器(鍵盤)輸入。未捕獲觸發的按鍵事件?
我想觸發keypress
事件爲每個字符將工作,但事實並非如此。這裏是我的測試代碼:
var barcodeScannerTimer;
var barcodeString = '';
// capture barcode scanner input
$('body').on('keypress', function (e) {
barcodeString = barcodeString + String.fromCharCode(e.charCode);
clearTimeout(barcodeScannerTimer);
barcodeScannerTimer = setTimeout(function() {
processBarcode();
}, 300);
});
function processBarcode() {
console.log('inside processBarcode with barcodeString "' + barcodeString + '"');
if (!isNaN(barcodeString) && barcodeString != '') { // @todo this check is lame. improve.
alert('ready to process barcode: ' + barcodeString);
} else {
alert('barcode is invalid: ' + barcodeString);
}
barcodeString = ''; // reset
}
window.simulateBarcodeScan = function() {
// simulate a barcode being scanned
var barcode = '9781623411435';
for (var i = 0; i < barcode.length; i++) {
var e = jQuery.Event("keypress");
e.which = barcode[i].charCodeAt(0);
$("body").focus().trigger(e);
}
}
如果您在多個快速輸入(如1234
),你會看到輸入捕捉罰款。但是,請單擊按鈕以運行我的測試代碼,並且不會捕獲輸入。該事件被觸發,因爲彈出一個警告框,但barcodeString
是空的!
爲什麼不能正常工作?我是否應該觸發keypress
以外的事件?
哇,我覺得非常傻了!謝謝:-) – Nate
當海報提供像您這樣的質量問題時,找到解決方案的速度會更快。 –