Я использую keyup, чтобы определить, когда содержимое в текстовом поле изменяется, но каким-то образом Facebook может обнаружить событие Ctrl + X в текстовом поле сразу после нажатия «X». Что это будет за событие?
Какое событие запускается, когда текст вырезается или вставляется (или ctrl+z'd) в текстовую область?
Ответы (3)
Большинство современных браузеров поддерживают события cut
, copy
и paste
. Попробуйте следующее, чтобы доказать это себе:
<textarea oncut="alert('Cut!')" rows="3" cols="40"></textarea>
person
Tim Down
schedule
19.12.2010
Я предполагаю, что они делают привязку к keydown и устанавливают какую-то переменную состояния при нажатии клавиши управления, затем, когда они получают событие keyup, они проверяют переменную состояния и действуют соответственно.
person
Samuel
schedule
19.12.2010
Это происходит в одном из текстовых полей автоматического увеличения Facebook. По сути, размер окна изменяется сразу после нажатия CTRL и X, чтобы он соответствовал тексту, до того, как произойдет какое-либо событие нажатия клавиши. Я думал о реализации события нажатия клавиши, которое также проверяет, нажат ли CTRL, но это не принесет мне никакой пользы, потому что у меня все еще нет размера выделенного текста.
- person Nick; 19.12.2010
Я не знал, что вы хотите автоматически увеличивать текстовые поля, потому что ваш вопрос не имеет к этому никакого отношения;)
- person Samuel; 19.12.2010
Что ж, это была основная причина, однако я использовал для вырезания и вставки текстовые поля, отличные от автоматически увеличивающихся.
- person Nick; 20.12.2010
Хе-хе, я сам разобрался!
В событии нажатия клавиши для текстовой области:
window.setTimeout((function(self) {
return function() {
console.log(self.value);
}
})(this), 0);
Это даст текущее значение текстовой области, а не значение до нажатия клавиши. Пока я проверял это только на Firefox 4.
Теперь мое автоматически растущее текстовое поле такое же красивое, как у Facebook!
person
Nick
schedule
19.12.2010
onchange
не для этого? - person Gabe   schedule 19.12.2010