用户在textarea中输入特定键时的preventDefault

时间:2014-08-20 14:10:05

标签: javascript jquery keydown preventdefault

我正在编写一个脚本,以便每当用户使用地图键入textarea某些特定的键盘键时,我显示替换了该键,我定义了,如果存在的话。

如果没有映射,我想拥有默认行为。

所以映射就像map[oldKey] = newKey;

如果我从键入映射的键开始,我的代码工作正常。(它正确显示替换)。虽然如果我按下未映射的密钥,然后尝试映射密钥,它就不再起作用了。

我认为我没有以某种方式正确使用preventDefault()

检查我的jsfiddle

由于

2 个答案:

答案 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;
    }
});