Monday, May 20, 2024
 Popular · Latest · Hot · Upcoming
11
rated 0 times [  12] [ 1]  / answers: 1 / hits: 33730  / 15 Years ago, wed, february 17, 2010, 12:00:00

I tried searching but unsure of what terms to look for.



I'm using jQuery and would like to use the keypress event in a textbox, but prevent all non-printable characters (ie. Enter, ESC, arrow keys, backspace, tab, ctrl, insert, F1-F12, etc) from triggering the event.



Is there an easy way to determine if it is printable?


More From » jquery

 Answers
16

The selected answer for this question is not complete. It does not handle the case where a character key is being pressed in combination with a modifier key (e.g. CTRL-A).



Try, for example, typing CTRL-A using firefox with the following code. The current answer will consider it as a character:



HTML:



<input placeholder=Try typing CTRL-A in Firefox style=width: 200px/>


JavaScript:



$(input).keypress(function (e) {
if (e.which !== 0) {
alert(String.fromCharCode(e.which));
}
});


http://jsfiddle.net/4jx7v/



Note: an alert won't be fired if using some browsers (such as Chrome), since they don't fire a keypress event for non-character inputs.



A better solution might be:



HTML:



<input placeholder=Try typing CTRL-A in Firefox style=width: 200px/>


JavaScript:



$(input).keypress(function (e) {
if (e.which !== 0 &&
!e.ctrlKey && !e.metaKey && !e.altKey
) {
alert(String.fromCharCode(e.which));
}
});


http://jsfiddle.net/hY5f4/



In this case, the alert is only being fired when A is pressed, not CTRL-A for all browsers.


[#97544] Sunday, February 14, 2010, 15 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
irvingcarloe

Total Points: 677
Total Questions: 109
Total Answers: 96

Location: Svalbard and Jan Mayen
Member since Sun, Sep 25, 2022
2 Years ago
irvingcarloe questions
Wed, Mar 31, 21, 00:00, 3 Years ago
Tue, Aug 4, 20, 00:00, 4 Years ago
Fri, Jul 3, 20, 00:00, 4 Years ago
;