我想创建一个包含多个文本区域的表单。理想情况下,用户将能够按下页面上的按钮将另一个文本区域添加到表单中。我已经用一点点 JS 完成了这个简单的部分,但我不确定如何提交这个表单并用 Django 存储结果——如果它总是有相同数量的文本区域,那就是很容易,但我不知道如何使用可变数字来做到这一点。我的 HTML 如下所示:
<body>
<form action="foo" method="post" id="survey_form">
<input type="textarea" rows="4" cols="20">
</form>
<button onclick="addQuestion();">add question</button>
</body>
该addQuestion()
函数只是将另一个 textarea 输入添加到表单中:
function addQuestion() {
var form = document.getElementById('survey_form');
var new_text_area = document.createElement('input');
new_text_area.setAttribute('type','textarea');
new_text_area.setAttribute('rows', '4');
new_text_area.setAttribute('cols', '20');
form.appendChild(new_text_area);
}
我的 Django 模型有一个字符串列表字段;这工作正常。现在的问题是如何从request.POST
列表中获取表单数据。我正在考虑为每个新的 textarea 赋予其自己的唯一标识符(textarea_1
,textarea_2
等),然后循环并查看是否request.POST['textarea_' + str(i)]
存在,并将其添加到字符串列表中。不过,这似乎真的很低效,而且很难启动。有没有更好、更 Pythonic 的方式来做到这一点?
另外,我不完全确定如何给每个文本区域一个唯一的标识符——我是 JS 的新手,我所有的知识都是从谷歌搜索中获得的。我正在考虑在索引变量上使用闭包i
,然后i
每次addQuestion()
调用时递增。那有意义吗?
最后,非常感谢为程序员提供的关于 JS 的快速入门教程的指针。