Перенос фокуса в новые contenteditable поля

231
31 марта 2018, 15:33

Как сделать так чтобы при создании нового элемента в него переносиля фокус?

https://jsfiddle.net/brachkoff/zfh8wmzr/3/

HTML:

<ul id="list">
  <li class="task"><input type="checkbox" class="task__checkbox"><span contenteditable="true" class="task__text">Текст задания</span></li>
  <li class="task"><input type="checkbox" class="task__checkbox"><span contenteditable="true" class="task__text">Еще текста</span></li>
  <li class="task"><input type="checkbox" class="task__checkbox"><span contenteditable="true" class="task__text">Какой-то текст</span></li>
</ul>
<div id="interface">
  <button id="add">Add Task</button>
</div>

JS:

$('#add').click(function() {
  $('#list').append('<li class="task"><input type="checkbox" class="task__checkbox"><span contenteditable="true" class="task__text"></span></li>')
})
Answer 1
$('#list')
    .append('<li class="task"><input type="checkbox" class="task__checkbox"><span contenteditable="true" class="task__text"></span></li>')
    .find('li:last-child [contenteditable]')
    .focus();
Answer 2

Есть метод focus(), который предназначен для установки фокуса.

Пример на jsfiddle.

$('#add').click(function() { 
  var $el = $('<li class="task"><input type="checkbox" class="task__checkbox"><span contenteditable="true" class="task__text"></span></li>'); 
  $('#list').append($el); 
  $el.find('.task__text').focus(); 
})
#list { 
  list-style: none; 
  padding-left: 40px; 
  padding-right: 40px; 
} 
 
.task__text { 
  margin-left: 0.5rem; 
  outline: none; 
} 
 
.task__text br { 
  display: none; 
} 
 
#interface { 
  padding-left: 40px; 
  padding-right: 40px; 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
<ul id="list"> 
  <li class="task"><input type="checkbox" class="task__checkbox"><span contenteditable="true" class="task__text">Текст задания</span></li> 
  <li class="task"><input type="checkbox" class="task__checkbox"><span contenteditable="true" class="task__text">Еще текста</span></li> 
  <li class="task"><input type="checkbox" class="task__checkbox"><span contenteditable="true" class="task__text">Какой-то текст</span></li> 
</ul> 
<div id="interface"> 
  <button id="add">Add Task</button> 
</div>

READ ALSO
Как подключить jquery плагин в react приложении

Как подключить jquery плагин в react приложении

Мой компонент React "должен" рендерить немного HTML, а потом применять к нему jQuery-плагин

229
GET запрос с помощью ajax

GET запрос с помощью ajax

Здравствуйте! Знаю как отправлять ajax запросы методом POST, но не знаю как отправлять методом GET (те

202
Как поставить курсор в конец contenteditable?

Как поставить курсор в конец contenteditable?

Нужно поставить курсор в конец contenteditable с помощью js и jq

220
Как обратиться на прямую к объекту в js?

Как обратиться на прямую к объекту в js?

Задача следующая: нужно обратиться на прямую к чекбоксу в js и присвоить ему класс, то есть присвоить класс только чекбоксу, имеющему некий...

186