Как заменить все строки-заполнители __prefix__ в элементах empty_form набора Django Formsets, используя только Javascript?
Наборы форм Django имеют атрибут empty_form
.
empty_form
.BaseFormSet предоставляет дополнительный атрибут empty_form который возвращает экземпляр формы с префиксом __prefix__ для более легкого использования в динамических формах с JavaScript.
В документации Django не сказано, как заменить __prefix__
на Javascript. Несколько онлайн примеров показывают, как сделать это с помощью jQuery, но я конкретно хочу сделать это с помощью Javascript - без jQuery.
Вот результирующий HTML из моего {{ formset.empty_form }}
:
<div id="prerequisiteEmptyForm">
<input type="text" name="prerequisites-__prefix__-text" maxlength="100" id="id-prerequisites-__prefix__-text">
<label for="id-prerequisites-__prefix__-DELETE">Delete:</label>
<input type="checkbox" name="prerequisites-__prefix__-DELETE" id="id-prerequisites-__prefix__-DELETE">
<input type="hidden" name="prerequisites-__prefix__-id" id="id-prerequisites-__prefix__-id">
<input type="hidden" name="prerequisites-__prefix__-content" value="21" id="id-prerequisites-__prefix__-content">
</div>
Везде, где отображается __prefix__
, я хочу заменить его на число... скажем, 321
.
Правильное решение:
<div id="prerequisiteEmptyForm">
<input type="text" name="prerequisites-321-text" maxlength="100" id="id-prerequisites-321-text">
<label for="id-prerequisites-321-DELETE">Delete:</label>
<input type="checkbox" name="prerequisites-321-DELETE" id="id-prerequisites-321-DELETE">
<input type="hidden" name="prerequisites-321-id" id="id-prerequisites-321-id">
<input type="hidden" name="prerequisites-321-content" value="21" id="id-prerequisites-321-content">
</div>
Так что мой вопрос становится
Используя только Javascript, как заменить постоянное значение ("__prefix__") на другое ("321") в нескольких элементах (inputs и labels) в нескольких атрибутах (name, id)? В частности, я хочу сделать это чисто для повторяемости. Мне не нужно индивидуальное решение для этой конкретной проблемы. Это должен быть общий подход... поскольку речь идет о замене константы, наверняка в Javascript есть чистый способ сделать это? Я все еще изучаю Javascript и пытаюсь не быть настолько зависимым от jQuery.
Это работает?
const emptyForm = document.querySelector('#prerequisiteEmptyForm');
clone = emptyForm.cloneNode(deep=true);
clone.innerHTML = clone.innerHTML.replace(/__prefix__/g, '321');