Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在表单中添加动态字段(Django)_Javascript_Django_Forms_Dynamic - Fatal编程技术网

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、 预防默认值(); });

如果我遇到同样的问题,我会同意,但这当然是你的决定。

附上你现在的屏幕截图“这不是我想要的”,谢谢你,但这不是我需要的。我不想在循环中从数据库获取数据,但正试图动态添加“字符域”在前端,用户输入数据后提交表单,从前端获取数据并存储到数据库中。