Toxa26
@Toxa26
Студент. Люблю верстать сайты.

Как ставить курсор в конкретное место?

Для примера набросал код:


У меня есть два блока с текстом(первый имитирует папку, второй файл). При клике правой кнопкой мыши на блок у него становится возможным редактировать свое название(с помощью contenteditable). В коде уже реализовано отслеживание события - был клик по файлу или папке.
Как мне при клике по конкретному блоку, ставить курсор в конец его названия если это папка и перед точкой, если это файл?
Заранее благодарен за любую помощь.
  • Вопрос задан
  • 495 просмотров
Решения вопроса 1
hzzzzl
@hzzzzl
https://stackoverflow.com/a/6249440

function onContextMenu(e) {
	e.preventDefault();
	elementOnClick = e.target;

	if(elementOnClick.tagName.toLowerCase() === 'div') {
    if(elementOnClick.classList.contains('folder')) {
	    elementOnClick.setAttribute('contenteditable', 'true');
      
    var range = document.createRange();
    var sel = window.getSelection();
    const pos =   elementOnClick.childNodes[0].textContent.length
    range.setStart(elementOnClick.childNodes[0], pos);
    range.collapse(true);
    sel.removeAllRanges();
    sel.addRange(range);
      
      elementOnClick.focus();
      console.log('Elem FOLDER');
      
      
    } else if(elementOnClick.classList.contains('file')) {
      elementOnClick.setAttribute('contenteditable', 'true');
      
    var range = document.createRange();
    var sel = window.getSelection();
    const pos =   elementOnClick.childNodes[0].textContent.lastIndexOf('.')
    range.setStart(elementOnClick.childNodes[0], pos);
    range.collapse(true);
    sel.removeAllRanges();
    sel.addRange(range);
      
      elementOnClick.focus();
      console.log('Elem FILE');
      
      
    }
	} else {
	  console.log('EMPTY');
	}
  document.addEventListener('click', onMouseClick, false);
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
28 нояб. 2024, в 18:46
3000 руб./за проект
28 нояб. 2024, в 17:46
10000 руб./за проект
28 нояб. 2024, в 17:38
12000 руб./за проект