Принятый ответ (и в основном любое другое решение, которое я нашел до сих пор) не работает с фокусировкой клавиатуры, т.е. е. нажав Tab, по крайней мере, не в моем Chromium 21. Вместо этого я использую следующий фрагмент:
$('#out').focus(function () {
$(this).select().one('mouseup', function (e) {
$(this).off('keyup');
e.preventDefault();
}).one('keyup', function () {
$(this).select().off('mouseup');
});
});
e.preventDefault()
в обработчике keyup
или focus
не помогает, поэтому отмена выбора после фокусировки клавиатуры, по-видимому, происходит не в их обработчиках по умолчанию, а скорее где-то между событиями focus
и keyup
.
Как предполагает @BarelyFitz, может быть, лучше работать с событиями в пространстве имен, чтобы случайно не отсоединить другие обработчики событий. Для этого замените 'keyup'
на 'keyup.selectText'
и 'mouseup'
на 'mouseup.selectText'
.