Как я устанавливаю фокус на первый входной элемент в HTML-форме, независимой от идентификатора?

Существует ли простой способ установить фокус (курсор ввода) веб-страницы на первом входном элементе (текстовое поле, dropdownlist...) при загрузке страницы, не имея необходимость знать идентификатор элемента?

Я хотел бы реализовать его как общий сценарий для всех моих страниц/форм моего веб-приложения.

83
задан Peter Mortensen 1 July 2019 в 01:28
поделиться

6 ответов

Можно также попробовать основанный на jQuery метод:

$(document).ready(function() {
    $('form:first *:input[type!=hidden]:first').focus();
});
96
ответ дан Marko Dumic 24 November 2019 в 08:40
поделиться

Помещение этого кода в конце Вашего body тег сфокусирует первый видимый, нескрытый включенный элемент на экране автоматически. Это обработает большинство случаев, которые я могу придумать незамедлительно.

<script>
    (function(){
        var forms = document.forms || [];
        for(var i = 0; i < forms.length; i++){
            for(var j = 0; j < forms[i].length; j++){
                if(!forms[i][j].readonly != undefined && forms[i][j].type != "hidden" && forms[i][j].disabled != true && forms[i][j].style.display != 'none'){
                    forms[i][j].focus();
                    return;
                }
            }
        }
    })();
</script>
3
ответ дан James Hughes 24 November 2019 в 08:40
поделиться

Также необходимо пропустить любые скрытые исходные данные.

for (var i = 0; document.forms[0].elements[i].type == 'hidden'; i++);
document.forms[0].elements[i].focus();
5
ответ дан Marko Dumic 24 November 2019 в 08:40
поделиться

Существует рецензия здесь, которая может быть полезной: Фокус Набора для первого Ввода на Веб-странице

6
ответ дан Galwegian 24 November 2019 в 08:40
поделиться

Если Вы используете Прототип платформа JavaScript тогда, можно использовать метод focusFirstElement :

Form.focusFirstElement(document.forms[0]);
7
ответ дан John Topley 24 November 2019 в 08:40
поделиться
document.forms[0].elements[0].focus();

Это может быть усовершенствовано с помощью цикла для, например, не определенных типов фокуса поля, отключенных полей и так далее. Лучше может быть должен добавить класс = "автофокус" к полю, которое Вы на самом деле делаете , хотят сфокусированный, и цикл по формам [я] .elements [j] поиск того имени класса.

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

32
ответ дан bobince 24 November 2019 в 08:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: