Javascript 禁用onkeypress功能

Javascript 禁用onkeypress功能,javascript,Javascript,我使用onkeypress处理自定义掩码,并手动插入按下的字符。但我发现,当我按下“a”键时,会出现两个“a”字符。一个在我想要的地方,一个在面具后面。有没有办法禁用onkeypress的常规功能,使其不会向文本框写入字符?这是我为所有此类texxtbox制作的自定义掩码。修改事件函数,使其看起来像这样: function onKeyPress(e){ //All the code you already have e.preventDefault(); return

我使用onkeypress处理自定义掩码,并手动插入按下的字符。但我发现,当我按下“a”键时,会出现两个“a”字符。一个在我想要的地方,一个在面具后面。有没有办法禁用onkeypress的常规功能,使其不会向文本框写入字符?这是我为所有此类texxtbox制作的自定义掩码。

修改事件函数,使其看起来像这样:

function onKeyPress(e){

    //All the code you already have

    e.preventDefault();
    return false;
}

您必须在事件处理程序中
返回false

稍微提醒一下:请记住,这并不像捕获正在按下的键并将其附加到文本字段末尾那样简单。您还需要跟踪插入符号的位置。例如,如果用户按home键、箭头键、backspace键或delete键,该怎么办?还是在文本域中间点击?在javascript中,查明caps lock是否处于活动状态(因此,是否应该附加
a
a
)也不是一件小事。有些键,如
^
~
不会立即输出,但会影响后续的击键。@DavidHedlund:如果您需要担心大写锁定,那么您使用了错误的事件:只有
按键
告诉您有关键入字符的任何信息,并给您一个字符代码,其中考虑了移位和大写锁定。@Tim:啊,没错!我提到的其他特殊字符也是如此(在第二次击键之前不会引发按键事件)。不过,插入符号的位置仍然很重要。这并不是说它不能做到,我只是说,我见过一些非常糟糕的实现,作者没有注意到这些细节,它对用户体验造成了极大的伤害,通常只是为了实现一个微不足道的效果。AFAIK
return false等于
e.preventDefault();e、 停止传播(),因此该部分是多余的。@Viruzzo:取决于您附加侦听器的方式。但是,
preventDefault()
在IE<9的所有情况下都会抛出错误。