That will probably always drop the first keystroke, even from the
barcode reader. That's easily fixable though by initializing lastKeyTime
to -1 and testing for that in badcodeonkeyup.
You could also check after the first keystroke by setting a timeout on
the first keystroke, so if you don't get the second within the high
threshold, it clears the field value and alerts the user (or however you
want to handle it).
However, doing this does mean if the barcode reader is broken or not
connected or the driver isn't working or whatever, no one will be able
to log in. Personally I'd let the user type their userid as a fallback,
but I don't know the use case at all, so maybe that doesn't make sense.
And I assume the original poster needs GM because he can't modify the
page, although if that's not the case, it would be better to just modify
the page to have this logic rather than using GM.
Brian
On 7/23/12 4:16 AM, Sam Larison wrote:
Not tested this at all, I bet there is a bug or two... not sure why
you need GM though
var lastKeyTime=new Date();
var low_threshold = 10; //assuming milliseconds, keys required to
be input with this much or less time between them
var high_threshold = 250; //assuming milliseconds between barcode
reads, to reset the system if they wait long enough
<input id="myfield" type="text" onkeyup="return barcodeonkeyup(event)" />
In your keyup listener (use
document.getElementById('myfield').addEventListener('keyup',barcodeonkeyup,false);
function barcodeonkeyup(ev){
var keytimediference=new Date() - lastKeyTime;
if(keytimediference >
low_threshold && keytimediference < high_threshold ){
// must be a keyboard input, clear your text field
// document.getElementById('myfield').value="";
ev.preventDefault()
return false;
}
lastKeyTime=new Date();
}
On Mon, Jul 23, 2012 at 6:12 AM, Prakash Ranganthan
<[email protected] <mailto:[email protected]>> wrote:
Thanks for the suggestion I too thought that but I don't have an
idea about how to proceed. can you help me
On Monday, July 23, 2012 10:41:34 AM UTC+5:30, blm wrote:
On 7/22/12 8:43 PM, Prakash Ranganthan wrote:
> Hi friends i tried blocking keyboard input but it also
blocks barcode
> input any idea how to proceed with blocking only keyboard
input in
> textbox and allowing barcode input.
>
> var barcode = document.getElementById('userid');
> barcode.addEventListener("keypress", function() {
alert("Please use
> Barcode Scanner!"); document.getElementById('userid').value
= "";}, true);
The barcode readers I've used just generate keystrokes, so as
far as the
browser's concerned, it's all keystrokes. However, the
keystrokes from
the reader usually come quickly and consistently, so maybe you
could
measure the time between keystrokes and differentiate that way.
Of course whatever reader you're using may work differently.
Brian
--
You received this message because you are subscribed to the Google
Groups "greasemonkey-users" group.
To view this discussion on the web visit
https://groups.google.com/d/msg/greasemonkey-users/-/YMrxvLyu8qgJ.
To post to this group, send email to
[email protected]
<mailto:[email protected]>.
To unsubscribe from this group, send email to
[email protected]
<mailto:greasemonkey-users%[email protected]>.
For more options, visit this group at
http://groups.google.com/group/greasemonkey-users?hl=en.
--
You received this message because you are subscribed to the Google
Groups "greasemonkey-users" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/greasemonkey-users?hl=en.
--
You received this message because you are subscribed to the Google Groups
"greasemonkey-users" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/greasemonkey-users?hl=en.