gpt4 book ai didi

javascript - 有没有办法在 Django Admin 弹出窗口(添加、更新、删除)完成时调用 Javascript 函数?

转载 作者:行者123 更新时间:2023-12-03 07:09:53 25 4
gpt4 key购买 nike

Image

我有这种情况,我在 Person 字段上绑定(bind)了更改事件。

我们依赖于每次选择值更改时运行的一些 JavaScript。它当前正在监听所述元素的更改事件,当用户直接在 select 提出的菜单中单击值时,它工作正常。

遗憾的是,当通过 Admin Popup 功能填充此选择时,似乎没有为选择触发更改事件,因为我们的回调未执行,即使元素的值实际上已更改。

是否有其他事件我们可以监听以获得与用户直接从列表中单击值时相同的行为?

最佳答案

正如您在 django source code 中看到的那样, change 更新相关对象时不会触发事件。当它在 deleting 上被解雇时和 adding .

我起初以为这是一个错误,但实际上它是有道理的,因为该值不一定/实际上已更新。

但是,如果您需要在您的用例中触发此类事件,这确实是一个问题。我能建议的最好的办法是在你自己的 JS 中覆盖这个行为(当然确保在加载 Django 的 JS 之后调用它):

window.djangoDismissChangeRelatedObjectPopup = window.dismissChangeRelatedObjectPopup;

window.dismissChangeRelatedObjectPopup = function dismissChangeRelatedObjectPopup(win, objId, newRepr, newId) {
const id = win.name.replace(/^edit_/, '');
const selectsSelector = interpolate('#%s, #%s_from, #%s_to', [id, id, id]);
const selects = $(selectsSelector);
window.djangoDismissChangeRelatedObjectPopup(win, objId, newRepr, newId);
selects.trigger('change');
}

因此,每当更新相关对象时,都应触发 change 事件。

关于javascript - 有没有办法在 Django Admin 弹出窗口(添加、更新、删除)完成时调用 Javascript 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64847806/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com