У меня есть та же проблема как пользователь в этом вопросе, который происходит из-за этой ошибки в WebKit. Однако обеспеченное обходное решение не будет работать на мое приложение. Позвольте мне вновь заявить о проблеме так, чтобы Вы не шли, читает другой вопрос:
Я пытаюсь выбрать весь текст в текстовой области, когда это получает фокус. Следующий jQuery кодирует работы в IE/FF/Opera:
$('#out').focus(function(){
$('#out').select();
});
Однако в Chrome/Safari текст выбран - очень кратко - но затем событие mouseUp запущено, и текст невыбранный. Следующее обходное решение предлагается в вышеупомянутых ссылках:
$('#out').mouseup(function(e){
e.preventDefault();
});
Однако это обходное решение бесполезно для меня. Я хочу выбрать весь текст только, когда пользователь дает фокус текстовой области. Он должен затем смочь выбрать только часть текста, если он выбирает. Кто-либо может думать об обходном решении, которое все еще отвечает этому требованию?
Как насчет этого?
$('#out').focus(function () {
$('#out').select().mouseup(function (e) {
e.preventDefault();
$(this).unbind("mouseup");
});
});
Создайте bool
. Установите его в true
после события фокуса и сбросьте его после события поднятия мыши. Если во время движения мыши вверх true
, вы знаете, что пользователь только что выбрал текстовое поле; следовательно, вы знаете, что должны предотвратить движение мыши вверх. В противном случае вы должны его пропустить.
var textFieldGotFocus = false;
$('#out').focus(function()
{
$('#out').select();
textFieldGotFocus = true;
});
$('#out').mouseup(function(e)
{
if (textFieldGotFocus)
e.preventDefault();
});
$(document).mouseup(function() { textFieldGotFocus = false; });
Важно, чтобы вы поместили слушатель mouseup, который сбрасывает переменную, на document
, поскольку не гарантировано, что пользователь отпустит кнопку мыши над текстовым полем.