It shouldn't drop the first keystroke because keytimediference will be
larger than high_threshold for the first keystroke.
I would set the timeout in the else condition for the if statement, if the
document.getElementById('myfield').value.length is less than the expected
barcode length, clear the field.
I was also thinking that perhaps it's suppose to be keydown instead of
keyup.
However at the store they sometimes have to key in the barcode don't they?
This feature seems a lot like a duck! Hopefully there isn't any financial
profit in this feature because if there is I want a slice!
If you don't clear the field then they can type really slowly and enter a
number still.
Something to keep in mind might be to call
document.getElementById('myfield').select()
any time the field is to be cleared by the next keystroke or barcode.
On Mon, Jul 23, 2012 at 11:18 AM, Brian L. Matthews <[email protected]>wrote:
> 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]>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].
>> 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.
>
>
> --
> 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.