Автофокус на первое пустое поле в форме

Я пытаюсь добиться функциональности автофокуса на первом пустом поле формы, которое может быть элементом ввода или любого другого вида, т.е.

1. textbox
2. radio button
3. Select
4. checkbox

Я посмотрел на веб-сайт jquery и попытался использовать селектор :input, но я не могу добиться автофокуса на любом поле ввода, кроме текстового поля. Я также настроил JS Fiddle,

Скрипка для кода

Может кто-нибудь помочь здесь?

2 ответа

Возможно, вам придется использовать filter() найти входные данные с пустыми значениями:

$(function () {
    $("input:enabled").filter(function () {
        return this.value.trim() == "";
    }).first().focus();
});

Это не будет работать, если вы используете checkbox, Итак, для этого:

$(function () {
    $("input:enabled").filter(function () {
        if ($(this).attr("type") == "checkbox" || $(this).attr("type") == "radio")
            return $(this).val().trim() == "" || !this.checked;
        else
            return this.value.trim() == "";
    }).first().focus();
});

Скрипка: http://jsfiddle.net/7fwrd2rk/

Вам нужно filter() из пустых / непроверенных входов и установите фокус на первый элемент в соответствующем наборе, как показано ниже.

$(function () {
    $("input:enabled").filter(function () {
        return this.type.match(/checkbox|radio/i) && //when it's a checkbox/radio
               !this.checked || //get me a list of unselected ones
               ($.trim(this.value) === ""); // else get me a list of empty inputs
    }).first().focus(); //grab the first from the list and set focus
});

Вот демо в том же духе.

Это включает в себя textarea и выберите.

Другие вопросы по тегам