Передать событие keydown в другое текстовое поле - PullRequest
0 голосов
/ 17 марта 2011

Я пытаюсь передать событие keydown из одного текстового поля в другое.Я имею в виду, что если вы, например, нажимаете клавишу «а», некоторый код должен имитировать эту клавишу как нажатую во втором текстовом поле.

Я не хочу просто копировать значениепервое текстовое поле во второе - оно должно быть, так сказать, для каждого ключа.Предположим, что первое текстовое поле содержит abc, а второе текстовое поле пустое. Когда вы затем нажимаете клавишу «d» в текстовом поле 1, текстовое поле 2 должно содержать только d.

То, что я уже пробовал, это (http://jsfiddle.net/E5qyr/1/):

$('#t1').keydown(function(e) {
    $('#t2').keydown(e);
});

Но это не работает (я думаю, я думаю, что слишком просто). Я знаю, что могу добавить нажатой символ, глядя на e.keyCode, но также «Backspace» и т. Д. Имеетчтобы работать.

У кого-нибудь есть идея передать событие keydown из одного текстового поля в другое?

Ответы [ 3 ]

1 голос
/ 17 марта 2011

Элементы Textarea не имеют слушателей, автоматически устанавливаемых на них, поэтому запуск события 'keydown' для # t2 не будет отображать ответ. Вам нужно просто добавить текст, который вы получаете из события нажатия клавиши # t1 (которое вы слушаете), и добавить его к своему # t2.

ОБНОВЛЕНО с поддержкой возврата. Другие найденные коды здесь .

Пример:

$('#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();
    }
});
0 голосов
/ 17 марта 2011

Как то так?

$('#t1').keydown(function(e) {
    var char = (e.keyCode == 8) ? '' : String.fromCharCode(e.keyCode + (e.shiftKey ? 0 : 32));
    $('#t2').val(char);
});
0 голосов
/ 17 марта 2011

Почему бы не заменить значение текстового поля onkeydown?Кажется, было бы проще сделать txt1.text = txt2.text вместо добавления существующих строк в txt1.

...