Курсор не следует за отступом текста после удаления элемента в

Javascript

Форум по Javascript
Ответить
Anonymous
 Курсор не следует за отступом текста после удаления элемента в

Сообщение Anonymous »

html: < /p> CSS:

Код: Выделить всё

h1 {
border: 1px black solid;
outline: none;
text-indent: 36px;
}

h1:empty::before {
content: attr(placeholder);
color: grey;
}
< /code>
js: < /p>
const h1 = document.querySelector('h1');

h1.addEventListener('input', () => {
if (h1.textContent !== '') return;

let elemToDel = [];

for (let i of h1.children) {
elemToDel.push(i);
}

elemToDel.forEach(i => i.remove());
});
https://jsfiddle.net/5fnvztsg/
Код JS предназначен для удаления оставшихся символов новой строки, когда h1.textContent пуст, чтобы :empty::before применяется.
Однако нажатие Enter при отсутствии текста (за исключением ::before) приводит к тому, что курсор, по-видимому, игнорирует текстовый отступ, хотя при вводе текста что-нибудь, а затем нажать введите, а затем удалив новую строку и набранный текст, кажется, снова помещает его в нужное место.
Я написал это:

Код: Выделить всё

const caretPos = window.getSelection();
const range = document.createRange();

range.selectNodeContents(h1);
range.collapse(false);

caretPos.removeAllRanges();
caretPos.addRange(range);
< /code>
сразу после "elemtodel.foreach (i => i.Remove ());" но это, похоже, не сработало. < /p>
Я также пытался: < /p>
h1.textContent = ' ';
после "elemToDel.forEach(i => i.remove());" что устранило проблему с кареткой, но за счет удаления ::before.

Подробнее здесь: https://stackoverflow.com/questions/793 ... ment-in-h1

Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»