Javascript: Как получить последние два символа, введенные в текстовой области? - PullRequest
3 голосов
/ 28 марта 2011

Как лучше всего получить последние два символа, введенные в текстовое поле?

Мне нужны последние 2 символа, набранные НЕ последние два символа всей строки.

Ценю помощь!

Ответы [ 2 ]

6 голосов
/ 28 марта 2011

Вам нужно перехватить событие keypress в текстовой области, а затем вести журнал нажатых клавиш. Обратите внимание, что это будет ловить клавиши со стрелками, Shift, Alt и т. Д., Поэтому, если вы просто хотите символы, вам нужно отфильтровать их.

Простой пример:

var keyPresses = [];
textarea.onkeypress = function(ev){
   ev = ev || window.event;

   var key = ev.keyCode || ev.which;
   keyPresses.push(key);
}
2 голосов
/ 28 марта 2011

Вот демонстрация работы с jQuery при отображении двух последних введенных символов: http://jsfiddle.net/Ender/5gUHb/

И источник:

var keys = [];
$('#target').keypress(function(e) {
    keys.unshift(e.which);
    update();
});

function update() {
       $('#last')
           .prepend($('<li/>').text(String.fromCharCode(keys[0])))
           .children(':eq(2)').remove();
}

Эта демонстрация фиксирует событие нажатия клавишив текстовой области снимает значение с массива (потому что тогда индексы представляют количество клавиш, которые были нажаты с момента нажатия этой клавиши), а затем обновляет дисплей.

Обновление дисплея просто выдвигаетпервое значение из массива в верхнюю часть <ul> и удаляет дочерний элемент (если таковой имеется) в индексе 2 в списке.

Кроме того, обратите внимание, что из-за того, как jQuery работает с .keypress(), вам НЕ нужно отфильтровывать модификатор или клавиши со стрелками.

ОБНОВЛЕНИЕ Пожалуйста, смотрите комментарий Тима Дауна к моему ответу для объяснения того, что фильтрация должна иметь место.Моя первоначальная заметка была ошибочной, основываясь на быстром тестировании в Chrome.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...