Django-Dynamic Form在formset中添加的每个新输入元素的增量ID

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django-Dynamic Form在formset中添加的每个新输入元素的增量ID相关的知识,希望对你有一定的参考价值。

我有一个表格,输入4个字段如下: -

forms.朋友

AuthorFormset = modelformset_factory(
    Author,
    fields=('due_date','author' ),
    extra=5,
    widgets={'due_date': forms.DateInput(attrs={
            'class': 'form-control', 'placeholder': 'Date'}),
            'author': forms.TextInput(attrs={
            'class': 'form-control',
            'id': 'txtSearch',
            'placeholder': 'Participants'
        }),
    }

我已经向字段作者添加了一个CSS ID,这是一个Text输入。对于本文输入,我还通过Jquery自动完成功能进行Ajax调用。

view.html

<form class="form-horizontal" method="POST" action="">
    {% csrf_token %}
{{ formset.management_form }}
{% for form in formset %}
<div class="row form-row spacer">
    <div class="col-2">
        <div class="input-group">
            {{form.author}}
        </div>
    </div>

使用javascript

<script>
  $(document).ready(function(){ 
      $("#txtSearch").autocomplete({
          source: "/ajax_calls/search/",
          minLength: 2,
          open: function(){
              setTimeout(function () {
                  $('.ui-autocomplete').css('z-index', 99);
              }, 0);
          }
        });

  });

</script>

一切都很好,只是因为我只能处理第一个字段的Ajax调用。我想为动态表单中添加的每个新字段增加ID。

答案

您也可以使用.each()循环jquery中的每个字段,而不是递增id,例如在每个输入上使用类型属性<input type="text" ...>

$('input[type="text"]').each(function() {
   var $input = $(this);
   $input.autocomplete({
      source: "/ajax_calls/search/",
      minLength: 2,
      open: function(){
         ...
      }
   });
});

参考文献:https://api.jquery.com/each/

编辑:在jquery选择器中缺少结束括号

以上是关于Django-Dynamic Form在formset中添加的每个新输入元素的增量ID的主要内容,如果未能解决你的问题,请参考以下文章

C#如何在form1中显示Form2中的变量?

C#中两个form窗体之间如何访问相互属性控件,如下:

做网站开发如何在form中嵌套form?

winform如何在一个form中修改另一个form控件属性

C# winform 多form传递数据问题

Ax 从一个form关闭另外一个form,AX全局变量