背景:我有一个动态表(因为我直到运行时才知道它的大小/元素),我试图在其中使用 javascript 函数填充文本区域。为此,我计划将文本区域的 id 以及我想将其填充到 javascript 函数中的值一起传递。
问题是我在为每个文本输入字段创建动态 id 值时遇到问题。这就是我目前尝试这样做的方式:
{% with "input_"|add:applicant.id as idName %}
<input id="{{ idName }}" type="text" value="">
<input type="button" hidden="TRUE" onclick="">
{{ idName }}
<script>
putTags({{ idName }}, {{ tags }});
</script>
{% endwith %}
Run Code Online (Sandbox Code Playgroud)
函数 putTags() 将填充文本输入的内容。不幸的是,这不起作用,因为它将每个人的 id 分配给“input_”,而没有附加申请人.id 的值(我已经检查过,每次迭代的申请人.id 都有一个正确的 id)。难道我做错了什么?有没有更简单的方法来创建这些唯一 ID?
因此,我环顾四周,似乎没有人遇到相同的问题,不得不引起这个看似常见的错误。我在我的html中呈现一些表单,如下所示:
<form method="post" action="">
{{ tags_formset.management_form }}
<!-- code displaying this formset -->
...
<!-- -->
<form method="post" action="">
{{ add_all_form.management_form }}
{{ add_all_form.addTagsToAll }}
<input type="submit" value="Add To Displayed Applicants" />
</form>
<form method="post" action="">
{{ remove_all_form.management_form }}
{{ remove_all_form.removeTagsFromAll }}
<input type="submit" value="Remove From Displayed Applicants" />
</form>
<input type="submit" value="Save Changes" />
</form>
Run Code Online (Sandbox Code Playgroud)
当我没有两个内部表单时,将正确显示表单集,并且“提交”按钮可以提交表单。当我添加第二种两种形式时,出现了几个问题:
-提交按钮停止工作(尽管在选择表单集的一个字段时按Enter仍提交表单
-add_all_form的提交工作正常,并且功能正常(不是问题,但有趣的是下一点...)
-remove_all_form无法通过“ ManagementForm数据丢失或已被篡改”验证错误来正常工作。
这是创建表单的views.py代码:
TagsFormSet = formset_factory(TagsForm, formset=TagFormSet, extra=applicantQuery.count())
if request.method == 'POST':
tags_formset = TagsFormSet(request.POST, request.FILES, prefix='tags', applicants=applicantQuery)
add_all_form = TagAddAllForm(request.POST, …Run Code Online (Sandbox Code Playgroud)