首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何仅使用Javascript替换Django empty_form元素中的所有empty_form占位符字符串?

如何仅使用Javascript替换Django empty_form元素中的所有empty_form占位符字符串?
EN

Stack Overflow用户
提问于 2022-05-31 17:35:08
回答 1查看 93关注 0票数 0

Django窗体集有一个empty_form属性。

empty_form

BaseFormSet提供了一个附加属性empty_form,它返回一个前缀为__prefix__的表单实例,以便更容易地在带有JavaScript的动态表单中使用。

Django文档实际上并没有说明如何用Javascript替换__prefix__。几个在线示例展示了如何使用jQuery来实现它,但我特别想用Javascript - no jQuery来实现。

下面是我的{{ formset.empty_form }}生成的HTML

代码语言:javascript
复制
<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

正确的解决方案:

代码语言:javascript
复制
<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,如何通过多个属性(名称、id)中的多个元素(输入和标签)将常量值("__prefix__")替换为其他值("321")?具体来说,我想为可重复性做干净的。我不想要一个高度定制的解决方案来解决这个特定的问题。这需要一种通用的方法..。既然这正在取代一个常量,那么Javascript肯定有一个干净的方法来做到这一点吗?我仍然在学习Javascript,并试图不那么依赖jQuery。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-31 18:33:55

我用了这个概念:

代码语言:javascript
复制
const emptyForm = document.querySelector('#prerequisiteEmptyForm');
clone = emptyForm.cloneNode(deep=true);
clone.innerHTML = clone.innerHTML.replace(/__prefix__/g, '321');
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72452043

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档