如何以编程方式打开 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的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式在 Django 中创建数据库视图?

Celery / Django - 如何以编程方式查看工人的状态

如何以编程方式为 Django 中的给定模型生成 CREATE TABLE SQL 语句?

如何使用javascript以编程方式(单击按钮)为django-select2字段设置值?

如何以编程方式在另一个视图中调用 Django Rest Framework 视图?

Django 1.6 - 以编程方式创建组和权限