Фокус Javascript и выберите не работает в FF - PullRequest
3 голосов
/ 01 апреля 2010

Используя jQuery, следующее не работает в FF, но в IE

$(this).focus().select();

Я искал это и обнаружил, что вы можете использовать тайм-аут, чтобы обойти это, но я не хочу этого делать, если смогу избежать этого. Кто-нибудь знает другой способ сделать это и заставить его работать в FF?

Метрополис

Ответы [ 4 ]

5 голосов
/ 01 апреля 2010

Я сталкивался с этим и раньше. Я считаю, что решение setTimeout () - единственный способ, которым это будет работать в Firefox. Проблема связана с порядком обработки событий, если я правильно помню: IE немедленно меняет фокус управления при вызове метода focus (), но Firefox обрабатывает его, добавляя событие focus в очередь событий, которая не разрешается до после завершения обработки текущего события. Трюк setTimeout () работает, потому что он добавляет остаток вашего кода к другому событию в очередь событий после события изменения фокуса, заставляя его разрешиться до того, как ваш код продолжит обработку.

3 голосов
/ 25 июня 2013

Пожалуйста, попробуйте этот код

setTimeout(function() 
 {
   $(Selecter).focus(); 
 }, 0);
0 голосов
/ 23 июля 2013

Решение, которое я только что нашел, заключается в использовании приведенного ниже кода.

[elementHere].setSelectionRange(0, [elementHere].value.length);

В соответствии с документацией Mozilla Developer Network , этот текст выделяется, но не фокусируется. По крайней мере, для меня это предотвратило проблемы с выделением текста внутри обработчика событий фокуса, так как выбор текста не приводит к тому, что элемент, содержащий его, снова фокусируется.

0 голосов
/ 01 апреля 2010

я использовал

$('input').focus().select();

на

 <input type="text" value="Some text" />

и это сработало в Firefox. может быть, я не понимаю, в чем именно твоя проблема.

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