最新消息:Welcome to the puzzle paradise for programmers! Here, a well-designed puzzle awaits you. From code logic puzzles to algorithmic challenges, each level is closely centered on the programmer's expertise and skills. Whether you're a novice programmer or an experienced tech guru, you'll find your own challenges on this site. In the process of solving puzzles, you can not only exercise your thinking skills, but also deepen your understanding and application of programming knowledge. Come to start this puzzle journey full of wisdom and challenges, with many programmers to compete with each other and show your programming wisdom! Translated with DeepL.com (free version)

jQuery javascript keypress function not working on IE8 - Stack Overflow

matteradmin4PV0评论

I've the following jquery function which avoid typing "1" in the input text:

<input id="myId" style="width:50%;" value="0" type="text">​

$("#myId").keypress(function(e) {
   var x=e.charCode;
   if (x == '49'){
       e.preventDefault();
   }
});​

This is the jsfiddle

which is not working on IE8. Where is my error? Thanks in advance!

EDIT JAVASCRIPT VERSION

<input id="myId" style="width:50%;" value="0" type="text"  onkeypress="javascript:checkNumber(event);"/>

function checkNumber(event) {
var x=e.which;
if (x == 49){
    event.preventDefault();
}
}

I've the following jquery function which avoid typing "1" in the input text:

<input id="myId" style="width:50%;" value="0" type="text">​

$("#myId").keypress(function(e) {
   var x=e.charCode;
   if (x == '49'){
       e.preventDefault();
   }
});​

This is the jsfiddle

which is not working on IE8. Where is my error? Thanks in advance!

EDIT JAVASCRIPT VERSION

<input id="myId" style="width:50%;" value="0" type="text"  onkeypress="javascript:checkNumber(event);"/>

function checkNumber(event) {
var x=e.which;
if (x == 49){
    event.preventDefault();
}
}
Share Improve this question edited Nov 21, 2012 at 15:13 Fseee asked Nov 21, 2012 at 14:21 FseeeFseee 2,6099 gold badges42 silver badges68 bronze badges 1
  • 1 Mandatoried link: unixpapa./js/key.html – Florian Margaine Commented Nov 21, 2012 at 14:30
Add a ment  | 

3 Answers 3

Reset to default 3

charCode is not cross-browser, you can use jQuery which property:

The event.which property normalizes event.keyCode and event.charCode. It is remended to watch event.which for keyboard key input.

var x = e.which;

If you don't use jQuery, you can code:

var x = e.charCode || e.keyCode;

Use e.which instead, since e.charCode isn't supported on all browsers.

Also, you might consider using .keyup() event instead of .keypress()

See this answer to a similar question. Try keydown instead of keypress and keyCode instead of charCode:

$("#myId").keydown(function(e) {
   var x=e.keyCode;
   if (x == '49'){
      e.preventDefault();
   }
});​

the jQuery documentation for keypress lists a few good reasons to use keydown instead, not the least of which is that it only fires once for a press and hold, and keypress reports the character, not the key (which is problematic when dealing with things like capslock.)

Post a comment

comment list (0)

  1. No comments so far