【发布时间】:2010-09-16 17:14:29
【问题描述】:
我正在编写一个需要模拟文本区域的应用程序。我知道如何处理它的唯一方法是捕获关键事件的 keyCode。如何获取该 keyCode 并在支持 utf-8 的情况下将其应用于画布?
干杯
【问题讨论】:
标签: javascript html canvas keycode
我正在编写一个需要模拟文本区域的应用程序。我知道如何处理它的唯一方法是捕获关键事件的 keyCode。如何获取该 keyCode 并在支持 utf-8 的情况下将其应用于画布?
干杯
【问题讨论】:
标签: javascript html canvas keycode
这似乎是个坏主意,因为除了文本输入之外,textarea 还免费提供了很多内容(插入符号、选择、剪切、粘贴、拖放、箭头键处理等),但这里有你需要做的两件事:
<canvas> 提供tabindex 属性,以便它可以接收焦点并因此引发关键事件;keypress(不是keydown)处理程序添加到<canvas> 元素以捕获文本输入。代码:
<canvas id="textarea" tabindex="1" width="300" height="200"></canvas>
<script type="text/javascript">
var el = document.getElementById("textarea");
el.onkeypress = function(evt) {
var charCode = evt.which;
var charStr = String.fromCharCode(charCode);
alert(charStr);
};
</script>
【讨论】:
keydown 来支持退格和删除。但是,对于收集文本输入,keypress 是唯一可以为您提供有关键入字符的数据的关键事件,因此是唯一的选择。见unixpapa.com/js/key.html
使用 jquery:
<div id="myTextArea></div>
$('#myTextArea').keypress(function (event) {
$('#myTextArea').append(String.fromCharCode(event.which));
});
【讨论】:
你见过Bespin吗?它不仅仅是 textarea 的替代品,而且它基本上可以满足您的需求。您当然可以查看代码和文档,或者如果它符合您的需要,就使用它。
【讨论】: