form textbox - сохранить фокус при загрузке страницы

На моей домашней странице у меня есть форма с текстовым полем поиска. Если вы нажмете на ввод и начнете печатать, когда страница находится в процессе погрузки, что-то крадет фокус, поэтому вам нужно щелкнуть обратно в текстовом поле ввода.

Есть ли способ предотвратить это? Нужно ли мне находить то, что крадет фокус?

1
nl ja de
Можете ли вы показать HTML, JS или страницу в Интернете?
добавлено автор Popnoodles, источник
«Должен ли я найти то, что крадет фокус» Очевидно. «Есть ли способ предотвратить это?» Узнав, что вызывает его, да.
добавлено автор Popnoodles, источник
ok загружает JS, чтобы просмотреть, поэтому вместо этого предложило решение найти элемент с фокусом.
добавлено автор Popnoodles, источник
вы уже вызываете его после загрузки страницы. Он может быть исправлен. Можете ли вы показать код, который его запускает? Это будет что-то вроде $ ('. Something'). ClearableTextField ();
добавлено автор Popnoodles, источник
на самом деле я нашел его. я просто обновляю свой ответ $ ('# f input # livesearch'). clearableTextField ();
добавлено автор Popnoodles, источник
Я просто подумал, есть ли какой-то код, чтобы заставить фокус оставаться на входе, но если нет, я все время буду комментировать все, пока не найду его. Единственное, что происходит в IE. Сколько раз я это говорил!
добавлено автор iltdev, источник
kirkleescollege.ac.uk Будьте нежны :)
добавлено автор iltdev, источник
Похож на его только JS на поле поиска курса, вызывающее проблему в IE. У меня будет игра с плагинами JQuery, которые делают то же самое намного лучше, чем я могу.
добавлено автор iltdev, источник
Использование кода помогло мне раскрыть проблему. Этот плагин вызывает проблему: github.com/ono/clearable_text_field Мне нужно будет искать замену или, возможно, вызов только после загрузки страницы.
добавлено автор iltdev, источник

1 ответы

Похоже, что один из ваших сценариев настраивает что-то, чтобы сосредоточиться на нагрузке.

Put this at the bottom of your HTML right before </body>. Your console will show you the HTML of the item that is gaining focus.

<script>
$(window).load(function() {//NB not document ready
    console.log($(':focus')[0]);
   //alert($(':focus')[0]);//if you don't know what console is
});
</script>

Hopefully there will be an ID in the element that you can search your script for, or enough clues to let you find what's being told to focus on load. Then you can remove/alter that line.

Addendum

It turns out this is the culprit

$('#f input#livesearch').clearableTextField();

That clearable function is only ever going to be required if the user uses that field, so let's make it contextual, i.e. only when it's given focus, make that function available. This should stop the naughty plugin stealing focus.

$('#f input#livesearch').on('focus', function(){
    $(this).clearableTextField();
});

It's generally best to write contextually - you'll find pages with dozens of binds and "live" events being set up on onload, but they are rarely used. If it's something that doesn't need to happen until the user does something or until you can tell a user is about to do something, write it that way.

0
добавлено