首页 > 解决方案 > 如何以编程方式打开 DAL(Django Autocomplete Light)Select2

问题描述

我正在使用 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。

标签: javascriptdjangojquery-select2django-autocomplete-light

解决方案


我发现该错误是由 autocomplete_light.js 函数初始化引起的,该函数与 document.ready 相关联。尝试访问 document.ready 上的 field.select2 不起作用。我需要一种方法来关注并在页面加载时打开 select2。将发布另一个问题。


推荐阅读