Javascript 在表单中添加动态字段(Django)
我的表格定义为:Javascript 在表单中添加动态字段(Django),javascript,django,forms,dynamic,Javascript,Django,Forms,Dynamic,我的表格定义为: class testForm(forms.Form): book = forms.CharField(label='Book:', widget=forms.TextInput()) 我试图在表单中添加动态字段。这意味着文本框旁边有一个按钮,如果单击该按钮,在原始文本框下会出现一个新的文本框,而此表单只是一个表单 在我的模板中: <table> {{form.as_table}} <table class = 'request'>
class testForm(forms.Form):
book = forms.CharField(label='Book:', widget=forms.TextInput())
我试图在表单中添加动态字段。这意味着文本框旁边有一个按钮,如果单击该按钮,在原始文本框下会出现一个新的文本框,而此表单只是一个表单
在我的模板中:
<table>
{{form.as_table}}
<table class = 'request'>
{{form.as_table}}
{# <input type="button" onclick="addTextBox()"/>#}
{# <span id="response"></span>#}
</table>
<br>
<input type="submit" value="Submit">
</table>
{{form.as_table}}
{{form.as_table}}
{# #}
{# #}
我不想更改我的模板,所以我尝试使用js来完成它
var countBox = 1;
var boxName = 0;
function addTextBox(){
boxName = "textBox"+countBox;
document.getElementById('response').innerHTML+='<br/><input type="text"
id="'+boxName+'" value="'+boxName+'" " /><br/>';
countBox += 1;
}
var countBox=1;
var-boxName=0;
函数addTextBox(){
boxName=“textBox”+countBox;
document.getElementById('response').innerHTML+='
我不知道这对您是否合适,但您可以尝试使用一个包含一个表单的页面,该页面可以添加所有新书并显示其他表单。
在basic中,当您通过表单添加新书时,它将使用ajax刷新页面,表单将不会出现在任何地方,您的书将位于数据库中,因此将显示在同一页面中
这是这方面的基本代码:
views.py:
def all(request):
obj = Books.objects.all()
...
模板:
<table>
{{form.as_table}}
<table class = 'request'>
{{form.as_table}}
{# <input type="button" onclick="addTextBox()"/>#}
{# <span id="response"></span>#}
</table>
<br>
<input type="submit" value="Submit">
</table>
<div id='books'>
{% for o in objs %}
{{ o }}
{% endfor %}
<form method='POST' action='#' enctype='multipart/form-data'>
{% csrf_token %}
// your form
<table>
{{form.as_table}}
<table class = 'request'>
{{form.as_table}}
{# <input type="button" onclick="addTextBox()"/>#}
{# <span id="response"></span>#}
</table>
<br>
// end of your form
<input type="submit" value="Submit">
</table>
<input class="ui button" type='submit' value='Add Skill' />
</form>
</div>
<script type="text/javascript">
$("#addform").submit(function(e) {
var url = $(this).attr('action');
var formData = new FormData(this);
$.ajax({
type: "POST",
url: url,
data: formData,
async: false,
cache: false,
contentType: false,
processData: false,
success: function(data)
{
$("#books").load("# #books");
}
});
e.preventDefault();
});
</script>
{objs%中o的%s}
{{o}
{%endfor%}
{%csrf_令牌%}
//你的表格
{{form.as_table}}
{{form.as_table}}
{# #}
{# #}
//结束你的表格
$(“#addform”).submit(函数(e){
var url=$(this.attr('action');
var formData=新formData(本);
$.ajax({
类型:“POST”,
url:url,
数据:formData,
async:false,
cache:false,
contentType:false,
processData:false,
成功:功能(数据)
{
$(“#图书”).load(“#图书”);
}
});
e、 预防默认值();
});
如果我遇到同样的问题,我会同意,但这当然是你的决定。附上你现在的屏幕截图“这不是我想要的”,谢谢你,但这不是我需要的。我不想在循环中从数据库获取数据,但正试图动态添加“字符域”在前端,用户输入数据后提交表单,从前端获取数据并存储到数据库中。