Javascript Django动态表单增量ID,用于在表单集中添加的每个新输入元素

Javascript Django动态表单增量ID,用于在表单集中添加的每个新输入元素,javascript,jquery,html,django,django-forms,Javascript,Jquery,Html,Django,Django Forms,我有一个表格,其中有4个字段作为输入,如下所示:- forms.py AuthorFormset = modelformset_factory( Author, fields=('due_date','author' ), extra=5, widgets={'due_date': forms.DateInput(attrs={ 'class': 'form-control', 'placeholder': 'Date'}),

我有一个表格,其中有4个字段作为输入,如下所示:-

forms.py

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'
        }),
    }
我已经向field author添加了一个css ID,它是一个文本输入。 对于这个文本输入,我还通过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>

{%csrf_令牌%}
{{formset.management_form}
{formset%中表单的%s}
{{form.author}}
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>

$(文档).ready(函数(){
$(“#txtSearch”).autocomplete({
来源:“/ajax\u调用/search/”,
最小长度:2,
打开:函数(){
setTimeout(函数(){
$('.ui autocomplete').css('z-index',99);
}, 0);
}
});
});
一切正常,只是我只能处理第一个字段的Ajax调用。
我想为动态表单中添加的每个新字段增加ID。

您也可以使用
.each()
在jquery中的每个字段上循环,而不是增加ID。例如,在每个类型属性为
的输入上循环:

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


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

还有各种其他输入标记,它们与文本字段相同。是否可以根据该文本字段的唯一占位符值或名称值,以更精确的方式完成此操作,例如在整个表单中的特定文本字段??如果有其他文本字段,您可以通过向输入中添加一个特殊类,将其添加到
'author'
TextInput小部件中,将属性
attrs
'class':'form control'
修改为
'class':'form control author input'
,然后修改jquery选择器(当前
'input[type=“text”
)要回答您的第二个问题,jquery中的选择器几乎可以选择您可以识别的任何内容。例如,根据名称属性,您可以使用
$('input[name=“value your looking”]”)
@ChiragSharma-您在控制台中是否收到关于
非唯一ID的任何警告?