私が思いついたコードは、文字1と4の間にかかる時間を検出します。それが10ミリ秒未満であれば、コードはバーコードスキャンされました。コードがペーストされている場合、フィールドは決して1文字長ではないため、タイマー変数は設定されず、時間は再び10ミリ秒より長くなります。
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Untitled Document</title>
<script>
var startTime = new Date().getTime();
function barcodeScanCheck(){
var input = document.getElementById("barcode").value;
if(input.length == 1){
startTime = new Date().getTime();
}
else if(input.length == 4){
var elapsedTime = new Date().getTime() - startTime;
if(elapsedTime < 10){
alert("Barcode");
}
else{
document.getElementById("barcode").value = "";
alert("Keyboard");
}
}
}
</script>
</head>
<body>
<form action="input.html" method="get">
<input id="barcode" name="barcode" type="text" onInput="barcodeScanCheck()">
<input name="submit" type="submit">
</form>
</body>
</html>
これはあなた自身の質問に対する回答ですか?そうでない場合は、これを修正して、あなたのコードをあなたの質問に入れてください。 –
はい、私は解決策を探していて見つけられませんでした。私の解決策を取り上げた後、他の誰かに同様の要件を満たすために投稿しました。 – zefram
あなたが質問と回答を同時に投稿したので、それは本当に混乱しました。 –