我剛寫完一小段javascript,檢測是否使用條形碼掃描器填充輸入字段,如果是,則將焦點移至下一個字段。
我的代碼回答了你的問題的一部分,「我想爲掃描器輸入設置一個jQuery偵聽器,並且是一個jQuery新手,它應該監聽所有的鍵盤輸入,但是隻有當它聽到掃描儀,只有當掃描儀輸入完成時。「
下面是輸入字段的HTML:
<input type="text" class="bcode" id="f1" onkeydown="typeSpeed(new Date().getTime());" onblur="typeSpeedReset();" onfocus="typeNextField('f2');" />
<input type="text" class="bcode" id="f2" onkeydown="typeSpeed(new Date().getTime());" onblur="typeSpeedReset();" onfocus="typeNextField('f3');" />
<input type="text" id="f3" />
我有被用於條形碼掃描儀錄入(F1 & F2)類的BCODE「兩個領域。第三個字段用於常規輸入(f3)。字段f1 & f2發送(1)當鍵被按下到函數'typeSpeed'時的當前時間戳和(2)字段獲得焦點時選擇的下一個字段的ID。當字段失去焦點時,這些字段也會觸發函數'typeSpeedReset'的調用。
這裏是JavaScript/jQuery的,使得它的工作:
$(function(){
var typingTimeout;
$('.bcode').keypress(function(e){
if (typingTimeout != undefined) clearTimeout(typingTimeout);
typingTimeout = setTimeout(isBarcode, 500);
});
});
var ts0 = 0, ts1 = 0, ts2, nf;
function typeSpeed(time) {
ts0 = (ts0 == 0) ? time : 0;
var ts3 = ts1;
ts1 = time - ts0;
ts2 = ts1 - ts3;
}
function typeSpeedReset() { ts0 = 0; ts1 = 0; }
function typeNextField(nextfield) { nf = nextfield; }
function isBarcode() {
if(ts2 < 20 && ts1 != 0) { $('#'+nf).focus(); }
}
會發生什麼事是由函數定量擊鍵之間的時間「typeSpeed」。我通過實驗發現(混搭鍵盤或按住鍵),最快的人體輸入在擊鍵之間具有大約〜33ms的延遲。我用來測試的條形碼掃描儀通常會產生10ms或更少的延遲。
通過類'bcode'在字段上設置超時以檢測輸入何時暫停。此時,評估延遲。如果小於20ms,則假定條形碼掃描器已被使用,並且下一個區域被給予焦點。
這段代碼寫的項目更進一步,通過改變字段的背景顏色,並在字段右側顯示一個小的條形碼圖形,以便用戶有明確的指示,表明它響應並且旨在用於條形碼掃描儀輸入。
天才。謝謝。 – AP257 2011-01-11 13:29:51