Добавьте фрагмент кода в текстовую область внутри цикла For Jinja2.Html

Программисты Html
Ответить
Anonymous
 Добавьте фрагмент кода в текстовую область внутри цикла For Jinja2.

Сообщение Anonymous »

Я пытаюсь добавить кнопку «добавить фрагмент кода» внутри текстовой области. У меня есть рабочий пример на этом рисунке 1.
текстовая область с кнопкой для добавления фрагментов кода
Я пытаюсь применить тот же код, но на этот раз текстовая область находится внутри модального окна и автоматически генерируется циклом jinja2 for.
Он генерирует форму редактирования для всех сообщений. В этом случае я добавил конкретный идентификатор в кнопки и текстовые области, поэтому, когда я нажимаю «добавить код», открываю правильное модальное окно с правильным идентификатором текстового поля для редактирования, например:

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

[url=#]
Add Code
[/url]


В какой форме это работает. Если пользователь введет текст или вручную добавит фрагмент кода, например «код здесь», сохранится нормально.
Проблема в том, что я хочу, чтобы кнопка «добавить код» работала, но когда я нажимаю, я получаю эту ошибку из моего JS:

const startPosition = textarea.selectionStart; #null не является объектом (оценивается 'textarea.selectionStart')

И я не понимаю, почему, поскольку другая форма работает, я подумал, что поскольку эта текстовая область (поскольку находится в цикле for) имеет уникальный идентификатор, она будет работать нормально.
Вот код JS для добавления блока фрагмента кода, когда пользователь нажимает кнопку «Добавить код»:

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

// script to add code snippet into textboxes
var textarea = document.getElementById('text-{{post.Id}}');
var insertCode = document.getElementById('add_code-{{post.Id}}');

insertCode.addEventListener('click', () => {
const startPosition = textarea.selectionStart;
const endPosition = textarea.selectionEnd;
const codeBlock = "\n```'code here'´´´\n";

console.log(startPosition);

const newValue = textarea.value.substring(0, startPosition) +
codeBlock + textarea.value.substring(endPosition);
textarea.value = newValue;

// Optional:  Place the cursor after the inserted code block
textarea.selectionStart = startPosition + codeBlock.length;
textarea.selectionEnd = startPosition + codeBlock.length;
textarea.focus();
});
Я получаю сообщение об ошибке в строке 6 этого кода (const startPosition = textarea.selectionStart;)
Я новичок во внешнем интерфейсе, поэтому, если кто-то может помочь с этим, я буду признателен.
Заранее спасибо.

Подробнее здесь: https://stackoverflow.com/questions/796 ... 2-for-loop
Ответить

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

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

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

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

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