我正在编写一个脚本,以便每当用户使用地图键入textarea某些特定的键盘键时,我显示替换了该键,我定义了,如果存在的话。
如果没有映射,我想拥有默认行为。
所以映射就像map[oldKey] = newKey;
如果我从键入映射的键开始,我的代码工作正常。(它正确显示替换)。虽然如果我按下未映射的密钥,然后尝试映射密钥,它就不再起作用了。
我认为我没有以某种方式正确使用preventDefault()
。
检查我的jsfiddle!
由于
答案 0 :(得分:2)
<textarea id="area" class="textbox"></textarea>
var greekArr = "ΑΒΨΔΕΦΓΗΙ ΚΛΜΝΟΠ ΡΣΤΘΩ ΧΥΖ";
var map = {};
for (var i = 65; i < 91; i++) {
map[i] = greekArr.charAt(i - 65);
}
$('textarea').on('keydown', function (e) {
if (e.keyCode in map) {
var div = document.getElementById('area');
div.value = div.value + map[e.keyCode];
return false;
}
});
答案 1 :(得分:1)
试试这个:
var greekArr = "ΑΒΨΔΕΦΓΗΙ ΚΛΜΝΟΠ ΡΣΤΘΩ ΧΥΖ";
var map = {};
for (var i = 65; i < 91; i++) {
map[i] = greekArr.charAt(i - 65);
}
$('textarea').on('keydown', function (e) {
var textArea = $(this)[0];
var key = e.keyCode;
if (map.hasOwnProperty(key)) {
textArea.value = textArea.value + map[key];
return false;
}
});