У меня есть скрипт, который при клике на кнопку добавляет на страницу ul c li. Когда фокус находится на li и пользователь нажимает Enter - я создаю еще 1 li и вставляю после первого. После чего делаю на последнем фокус. Например:
let activeLi;//активная li
let newLi = $('<li></li>');
activeLi.after(newLi);
newLi.focus();
Html имеет такой вид
<div contenteditable="true">
<ul>
<li></li>
</ul>
</div>
Но фокус не ставится на новый элемент, а остается на старом. В чем моя ошибка?
Не забывай про tabindex и всё будет работать:
$("li").focus().parent().keypress(function (e) {
if (e.keyCode === 13) {
var li = $("<li tabindex=0>")
$(e.target).after(li)
li.focus()
}
})
ul { counter-reset: i }
li { counter-increment: i }
li:after { content: counter(i) }
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
<li tabindex=0>
</ul>
Сборка персонального компьютера от Artline: умный выбор для современных пользователей