HighDots Forums  

KeyPress Events in IE

Javascript JavaScript language (comp.lang.javascript)


Discuss KeyPress Events in IE in the Javascript forum.



Reply
 
Thread Tools Display Modes
  #1  
Old   
Ron Brooks
 
Posts: n/a

Default KeyPress Events in IE - 10-07-2003 , 09:43 PM






Is there any way in JavaScript to determine which key has been pressed
during any of the key-press, key-down, key-up events in IE6+? It
appears the "which" property only works for Netscape.

Reply With Quote
  #2  
Old   
Jules
 
Posts: n/a

Default Re: KeyPress Events in IE - 10-07-2003 , 09:59 PM






I can help you with this!

In netscape, it is evt.which. In IE, it's event.keyCode. Here's a snippet
of code I use:

function onlyNumbersXB(obj, e, mask) {

var keyCode;
var returnVal = false;

if (window.event) {
e = window.event;
keyCode = e.keyCode;
} else {
// a key, such as delete, was pressed; let it pass through
if (e.keyCode == e.which) keyCode = null;
// else if not a char we don't know what this is; let it pass through
else if (e.charCode != e.which) keyCode = void 0;
// else a char - set it
else keyCode = e.which;
}

// do whatever you want based on keyCode...

// now for the return
if (window.event) {
e.returnValue = returnVal;
return returnVal; // not really necessary but I'm trying to get
Safari to work
} else
return returnVal;
}

}

This method is invoked on a text field, onKeyPress='return
onlyNumbersXB(this, event, mask)'

My problem, as posted elsewhere, is getting Safari to behave itself. It has
window.event and behaves that way. It sets e.returnValue appropriately. It
still doesn't recognize "false" and let's the key pass.

Anyone?

Julia

"Ron Brooks" <ronbrooks (AT) dendress (DOT) com> wrote

Quote:
Is there any way in JavaScript to determine which key has been pressed
during any of the key-press, key-down, key-up events in IE6+? It
appears the "which" property only works for Netscape.



Reply With Quote
  #3  
Old   
Richard Cornford
 
Posts: n/a

Default Re: KeyPress Events in IE - 10-08-2003 , 01:02 AM



"Jules" <jules9514 (AT) yahoo (DOT) com> wrote

<snip>
Quote:
My problem, as posted elsewhere, is getting Safari to behave itself.
It has window.event and behaves that way. It sets e.returnValue
appropriately. It still doesn't recognize "false" and let's the
key pass.
Did you try the W3C DOM events - preventDefault - method, combined with
checking that the event is cancelable by checking the event's W3C DOM
(boolean) - cancelable - property? Also (assuming that is no-go) have
you considered trying to cancel onkeydown and/or onkeyup instead of (or
in addition to) onkeypress?

Richard.




Reply With Quote
  #4  
Old   
Jules
 
Posts: n/a

Default Re: KeyPress Events in IE - 10-08-2003 , 01:05 AM




"Richard Cornford" <Richard (AT) litotes (DOT) demon.co.uk> wrote

Quote:
"Jules" <jules9514 (AT) yahoo (DOT) com> wrote in message
news:127051ac07a23678f1365bca20fde760 (AT) news (DOT) teranews.com...
snip
My problem, as posted elsewhere, is getting Safari to behave itself.
It has window.event and behaves that way. It sets e.returnValue
appropriately. It still doesn't recognize "false" and let's the
key pass.

Did you try the W3C DOM events - preventDefault - method, combined with
checking that the event is cancelable by checking the event's W3C DOM
(boolean) - cancelable - property?
I did try preventDefault() -- no go. I don't know what you mean by
"combined with if the event is cancelable". What would combining the two
do?


Quote:
Also (assuming that is no-go) have
you considered trying to cancel onkeydown and/or onkeyup instead of (or
in addition to) onkeypress?
Yea - except we have problems with onKeyDown and Netscape 7. That's why we
went with onKeyPress.

Canceling keystrokes is something that whole documents have been written
about regarding IE and Netscape. I can't believe that I can be the only
person struggling with this with Safari...

Julia




Reply With Quote
  #5  
Old   
Richard Cornford
 
Posts: n/a

Default Re: KeyPress Events in IE - 10-08-2003 , 02:25 AM



"Jules" <jules9514 (AT) yahoo (DOT) com> wrote

<snip>
Quote:
I did try preventDefault() -- no go. I don't know what you
mean by "combined with if the event is cancelable". What
would combining the two do?
I mean that if the event object has the W3C DOM events specified
boolean - cancelable - property and it is false then there is not much
point in calling its - preventDefault - method as the event cannot be
cancelled.

Quote:
Also (assuming that is no-go) have you considered trying to
cancel onkeydown and/or onkeyup instead of (or
in addition to) onkeypress?

Yea - except we have problems with onKeyDown and Netscape 7.
That's why we went with onKeyPress.

Canceling keystrokes is something that whole documents have
been written about regarding IE and Netscape. I can't
believe that I can be the only person struggling with this
with Safari...
Validating user input as they type is problematic at best, clear
instructions often make it unnecessary and you usually won't catch paste
operations so the field would still need to be validated onsubmit
anyway. These days I probably would not bother so I do not know any
currently recommended method.

However, though I don't have access to a Mac at present so I cannot test
Safari, I would expect Konqueror (on which Safari is based) to exhibit
the same problem, so if you could make up a minimal test case page that
does exactly what you require where it is working now (and preferably
nothing else) and post it (or a URL to an online version) then I (and/or
someone else) would probably have a look at it and see if it cannot be
made to do what you want.

Quote:
Julia
That is not a name you see often these days. You share it with my sister


Richard.




Reply With Quote
Reply




Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off



Powered by vBulletin Version 3.5.4
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.