如何分配新的ascii密钥代码值

时间:2012-12-03 05:51:28

标签: javascript

如果用户按下enter键,则其行为与按esc键的行为相同。

function OnEditorKeyPress(editor, e) {
    if (e.htmlEvent.keyCode == 13) {
        e.htmlEvent.keyCode = 27;
        //treeList.CancelEdit();
    }
}

但是在e.htmlEvent.keyCode = 27;这句话之后,价值13仍然相同。如何分配新值或任何其他替代方法是为了做到这一点?

3 个答案:

答案 0 :(得分:2)

事件对象的这些属性是只读的(包括KeyCode),因此您无法做到这一点。为什么你不能这样做?

function OnEditorKeyPress(editor, e) {
   //If user press enter or escape
   if (e.htmlEvent.keyCode == 13 || e.htmlEvent.keyCode == 27) // correct comparison operation
   {
      treeList.CancelEdit();
      e.htmlEvent.preventDefault
   }
}

编辑:如果您坚持,请在Mozilla论坛上阅读:Need to override key pressed replacing keycode

答案 1 :(得分:0)

您好此代码可以帮助您停止“输入”按钮的默认功能但是您可以输入您的代码,以便在用户按“输入”时执行任何操作。虽然在ENTER上实现ESC功能将不受欢迎。

以下是工作示例http://jsfiddle.net/Z4dgr/11/

<!DOCTYPE html>
<html>
<body>
<script type="text/javascript">
function displayunicode(e){
e.preventDefault();
var unicode=e.keyCode? e.keyCode : e.charCode
alert(unicode)
}
</script>
<form>
Enter from keyboard <input type="text" size="2" maxlength="1" onkeypress="displayunicode(event); this.select()" />
</form>
</body>
</html>​

答案 2 :(得分:0)

根据汤姆的回答,这里是你需要的。

function OnEditorKeyPress(editor, e) {
   //If user press enter or escape
   if (e.htmlEvent.keyCode == 13 || e.htmlEvent.keyCode = 27) 
   {
      treeList.CancelEdit();
      e.htmlEvent.preventDefault();
   }
}