我正在尝试将keydown
事件从一个文本框传递到另一个文本框。我的意思是,例如,如果您按下'a'键,某些代码应该模拟该键在第二个文本框中被按下。
我不想只将第一个文本框的值复制到第二个 - 它应该基于每个键,所以说。假设第一个文本框包含abc
,第二个文本框为空,当您按下文本框1中的“d”键时,文本框2应仅包含d
。
我已经尝试的是(http://jsfiddle.net/E5qyr/1/):
$('#t1').keydown(function(e) {
$('#t2').keydown(e);
});
但这不起作用(我想我的想法太简单了)。我知道我可以通过查看e.keyCode
来附加按下的角色,但“退格”等也必须正常工作。
是否有人有想法将keydown
事件从一个文本框传递到另一个文本框?
答案 0 :(得分:1)
Textarea元素没有自动安装侦听器,因此触发#t2的'keydown'事件不会显示响应。你想要的只是添加你从#t1 keydown事件(你正在听的)中获得的文本,并将其附加到你的#t2。
更新了对退格的支持。其他代码here。
示例:
$('#t1').keydown(function(e) {
if (e.which == 8) { //Backspace
this.text(this.val().substr(0, this.val().length - 1));
} else {
$('#t2').append($('#t1').val());
this.empty();
}
});
答案 1 :(得分:0)
为什么不替换onkeydown上的文本框值?似乎只需要txt1.text = txt2.text
而不是在txt1中附加现有字符串就更简单了。
答案 2 :(得分:0)
这样的东西?
$('#t1').keydown(function(e) {
var char = (e.keyCode == 8) ? '' : String.fromCharCode(e.keyCode + (e.shiftKey ? 0 : 32));
$('#t2').val(char);
});