更改默认键操作JavaScript
可能重复:更改默认键操作JavaScript,javascript,jquery,html,preventdefault,Javascript,Jquery,Html,Preventdefault,可能重复: 是否有一种方法可以更改JavaScript中按键的默认字符。比如,如果有人按下“E”按钮,它会打印出一个p,这是实时的,就像它被输入到文本区域一样。用jQuery或类似的东西做这个?塞纳克斯 查看此框架以添加键盘快捷键 当然,它不会自动将任何按键转换为另一个字符并输出该字符,您必须确定页面的哪个部分具有焦点,例如文本字段,并使用您实际想要输入的字符修改其值。以下是一个完整的工作解决方案示例,根据答案: jQuery.fn.extend({ InsertCart:函数(myValu
是否有一种方法可以更改JavaScript中按键的默认字符。比如,如果有人按下“E”按钮,它会打印出一个p,这是实时的,就像它被输入到文本区域一样。用jQuery或类似的东西做这个?塞纳克斯 查看此框架以添加键盘快捷键
当然,它不会自动将任何按键转换为另一个字符并输出该字符,您必须确定页面的哪个部分具有焦点,例如文本字段,并使用您实际想要输入的字符修改其值。以下是一个完整的工作解决方案示例,根据答案:
jQuery.fn.extend({
InsertCart:函数(myValue){
返回此。每个函数(i){
if(文档选择){
//适用于Internet Explorer等浏览器
这是focus();
sel=document.selection.createRange();
sel.text=myValue;
这是focus();
}
else if(this.selectionStart | | this.selectionStart==“0”){
//适用于基于Firefox和Webkit的浏览器
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);
这是focus();
this.selectionStart=startPos+myValue.length;
this.selectionEnd=startPos+myValue.length;
this.scrollTop=scrollTop;
}否则{
this.value+=myValue;
这是focus();
}
})
}
});
$(函数(){
var ta=$('').appendTo('body');
ta.按键(功能(e){
如果(e.which==101)//e
{
e、 预防默认值();
ta.插入式树脂(“P”);
}
});
});
@Bryan:虽然这个问题与链接的问题非常相似,但链接的问题没有真正的解决方案。这个问题有一个简单的答案(见下面我的答案)。谢谢。然而,TA是否需要附加到正文中,或者我可以使用传统的PrexCitng selecot吗?@JonahAllibone:无需附加;那只是为了演示。您可以使用例如var ta=$(“#ta”)代码>我最近尝试过这样做,但没有成功。什么也没发生。它不正常您是否有带有id=“ta”
的文本区域?如果没有,您需要创建一个。如果您仍然有问题,请发布一个fiddle链接。我意识到我假设这也适用于contentEditable div,但是浏览器处理contentEditable div选择的方式似乎不同于textarea选择。如果你有一个解决方案,请张贴它!哈哈
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');
}
});
});