有没有办法可以更改JavaScript中按下的键的默认字符。就像有人按下“E”按钮一样,它会打印出一个p而不是,这就像现场一样,就像输入一个textarea一样。无论如何用jQuery或类似的东西做到这一点? Thnaks!
答案 0 :(得分:2)
以下是基于this答案的工作解决方案的完整示例:
jQuery.fn.extend({
insertAtCaret: function(myValue) {
return this.each(function(i) {
if (document.selection) {
//For browsers like Internet Explorer
this.focus();
sel = document.selection.createRange();
sel.text = myValue;
this.focus();
}
else if (this.selectionStart || this.selectionStart == '0') {
//For browsers like Firefox and Webkit based
var startPos = this.selectionStart;
var endPos = this.selectionEnd;
var scrollTop = this.scrollTop;
this.value = this.value.substring(0, startPos) + myValue + this.value.substring(endPos, this.value.length);
this.focus();
this.selectionStart = startPos + myValue.length;
this.selectionEnd = startPos + myValue.length;
this.scrollTop = scrollTop;
} else {
this.value += myValue;
this.focus();
}
})
}
});
$(function() {
var ta = $('<textarea id="ta" style="width: 400px; height: 200px;"></textarea>').appendTo('body');
ta.keypress(function(e) {
if (e.which == 101) // e
{
e.preventDefault();
ta.insertAtCaret('P');
}
});
});
答案 1 :(得分:1)
查看此框架以添加键盘快捷键。
http://www.openjs.com/scripts/events/keyboard_shortcuts/
当然它不会自动将任何按键转换为另一个字符并输出该字符,你必须弄清楚页面的哪个部分具有焦点,例如文本字段,并修改它的值与你的任何角色实际上想要被输入。