如何以编程方式打开 DAL(Django Autocomplete Light)Select2
Posted
技术标签:
【中文标题】如何以编程方式打开 DAL(Django Autocomplete Light)Select2【英文标题】:How to open a DAL ( Django Autocomplete Light ) Select2 programmatically 【发布时间】:2021-07-22 22:59:51 【问题描述】:我正在使用 DAL 从这样的表单字段中呈现自动完成功能:
search = forms.ChoiceField(
widget=autocomplete.Select2(
url='/search/my_search/',
attrs=
'data-placeholder': 'Select an option',
'data-minimum-input-length': 1,
'data-theme': 'bootstrap4',
)
)
它使用这个类渲染:“select2-hidden-accessible”并获得这个属性“data-autocomplete-light-function="select2"。 它没有得到“select2”类,它被赋予了它的一个跨度。 一切正常,除了我无法以编程方式打开 select2。
我试过了:
$('#id_search').select2('open')
但它给出了错误:“在未使用 Select2 的元素上调用了 select2('open') 方法。”,因为 DAL 没有将类“select2”传递给呈现的表单字段“id_search” . 由于某些特殊性,我无法手动将类传递给组件。 如果我单击该字段,它会打开并正常工作。
我需要一些帮助才能在页面加载时打开 select2。
【问题讨论】:
你能做到$('#id_search').addClass('select2').select2('open')
吗?可能是添加所需课程的最快方法。您可能还需要先不带参数地调用.select2()
;我不记得 select2 是如何直接工作的。
我发现错误发生是因为 autocomplete.js 尚未加载到“$(document).ready()”上。我怎么知道它已经被初始化了?
【参考方案1】:
我发现错误是由 autocomplete_light.js 函数初始化引起的,它与 document.ready 相关。 尝试访问 document.ready 上的 field.select2 不起作用。 我需要一种方法来关注并在页面加载时打开 select2。将发布另一个问题。
【讨论】:
以上是关于如何以编程方式打开 DAL(Django Autocomplete Light)Select2的主要内容,如果未能解决你的问题,请参考以下文章
Celery / Django - 如何以编程方式查看工人的状态
如何以编程方式为 Django 中的给定模型生成 CREATE TABLE SQL 语句?
如何使用javascript以编程方式(单击按钮)为django-select2字段设置值?