如何使用 jQuery 在 Django Autocomplete Light 小部件上捕获更改事件

How to capture on change event on Django Autocomplete Light widget using jQuery

我在我的应用程序中使用 Django Autocomplete Light (DAL)。

为了在后台对用户 selection 进行一些 post 处理,我正在尝试捕获 .on('change') 事件(当 DAL select 字段选择已更改)使用 jQuery(就像我们对输入字段或 Django select 字段等对象所做的那样)。但是我无法捕获事件。

例如下面的代码(已编辑):

$(document).on('change', '#x_select_item', function() {
    console.log('Selection on x_select_item changed');
});

未生成任何消息

编辑

以下用于捕获 .on('focus) 的代码 有效 :

$(document).on("focus", '#x_select_item', function() {
    console.log('THIS IS FIELD x_select_item for on Focus Event');
});

寻找 DAL 事件也无济于事,只是需要 "select2" 个事件 page。列出的事件包括 "change" 和 "change.select2",但使用这两个事件(如上例所示)不会在控制台中产生任何反应。

有什么方法可以在 DAL 上捕获 select离子变化事件

这是一个相当“老”的问题,但我偶然发现了几乎相同的问题。

据我所知,旧版本的 DAL Django Autocomplete Light 中存在一个错误。 根据 github 项目中的问题,它已在 >3.5

版本中修复

我刚刚升级到最新版本 (v3.8.1),更改事件按预期触发。

我已经安装了 3.8.1 版,我必须使用此代码来触发更改事件,在文档中:

$(':input[name$=continent]').on('change', function() {
   console.log("change fired");
});

当您检查 html 代码中的元素时,continent 是模型字段名称,而不是 select 的 ID。