Можно ли использовать автофокус на элементе с contenteditable?

я использую contenteditable атрибут <div> чтобы он действовал как текстовое поле по требованию (для пользователей, чтобы переименовать что-то). Но я хочу включить autofocus на нем, а также, Так что пользователи могут начать печатать сразу (<div> всегда contenteditable изначально включена).

это действительно и / или возможно? Или мне придется переключиться на стандартный ввод текста?

2 ответов


вам придется делать это с JavaScript в большинстве браузеров, я думаю. И он не будет работать на iOS, что позволяет только программное использование focus() в обработчике событий подлинного взаимодействия пользователя (например,click или событие, связанное с касанием).

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

<div contenteditable="true" id="editable"></div>

<script type="text/javascript">
    window.onload = function() {
        document.getElementById("editable").focus();
    };
</script>

для будущих зрителей:

Я думаю, что у меня может быть немного более элегантное решение.

$(window).on("load", function() {
  $("[autofocus]").focus();
});

Итак, после загрузки страницы... BAM jQuery фокусируется на элементе с атрибутом "автофокус"!

вы можете поиграть с селектором, чтобы получить именно то, что вы хотите.