1
<html>
<body onkeypress = "show_key(event.which)">
<form method="post" name="my_form">
The key you pressed was:
<input type="text" name="key_display" size="2"/>
</form>
<script type="text/javascript">
function show_key ( the_key )
{console.log(the_key);
       document.my_form.key_display.value = String.fromCharCode ( the_key );
}
</script>
</body>
</html>

上面的代码来自这里:http ://www.elated.com/articles/events-and-event-handlers/

问题:

1.在前端输入:a,会显示:aa,为什么显示双字母,我只输入一个a?

2. show_key(event.which),这里事件的意思是“按键”,我可以更改事件的名称吗?我试图将事件更改为e,然后在前端输入:a,它显示:a,但在控制台中,它也显示:ReferenceError: e is not defined

4

1 回答 1

1

要检索事件,您必须像这样调用处理程序

<body onkeypress = "show_key(event)">

然后在函数内部

function show_key ( e )
{
       var the_key = e.which;
        console.log(e.which);
       document.my_form.key_display.value = String.fromCharCode ( the_key );
}

关于双重输入,它不是双重输入,首先您将 key_Display 值设置为您计算的字符串,然后,当事件通过您的处理程序时,它会将符号添加到当前聚焦的输入字段。有关活动仙境的更多信息:http: //www.w3.org/TR/DOM-Level-3-Events/#dom-event-architecture

如果您只想始终关注同一个输入字段,这是一种更简单的方法:

<body onload="focusMyInput">  
    <form method="post" name="my_form">
        <input type="text" id="my_input" onblur="focusMyInput" name="key_display" size="2"/>
...

var focusMyInput = function(){
   document.getElementById('my_input').focus();
}

此代码将在加载时执行此操作,输入#my_input 将被聚焦,如果它变得模糊(失去焦点),它将运行相同的例程来恢复它。

于 2013-06-25T07:12:21.737 回答