【问题标题】:Can't Get Event To Fire On Select Box Change无法在选择框更改时触发事件
【发布时间】:2020-10-27 04:24:10
【问题描述】:

我在此页面上有一个 $(document).ready(function() 函数,该函数成功触发(因此我的 javascript 加载成功)。

我试图在我的选择框更改时触发一个事件,但根本无法触发它(即使我将其设为点击事件)。这是在 Django Admin 中,所以我不能轻易地将 id 添加到元素中(我确信这并不难,但我找不到方法)。

这是我要监听的元素:

<select name="base_module" required="" id="id_base_module">

这些是我尝试过的一些事情:

var test = document.querySelector('[name="base_module"]');
$(test).click(function(){
    console.log("success")
});

$('#id_base_module').click(function(){
    console.log("success")
});

$('select#id_base_module').change(function(){
    console.log("success")
});

我已在我的 Django 管理页面中添加了我的 javascript 文件,并在相关 admin.py 文件中的正确模型下使用此代码:

class Media:
        js = (
            'js/javascript.js',
        )

在此元素上设置事件侦听器的任何帮助将被欣赏选择选择框中的项目时会被解雇。

谢谢。

【问题讨论】:

    标签: javascript django django-admin


    【解决方案1】:

    您肯定想使用change 事件,而不是click 事件。

    这个:

    $('#id_base_module').change(function(){
        console.log("success")
    });
    

    为我工作(与您在第三种方法中已有的变化不大)。您的第一种方法也可以,只需将其更改为使用 change 事件而不是 click

    【讨论】:

    • 谢谢,我实际上已经尝试过了,因为这似乎是正确的做法。我刚刚又试了一次,但没有用。我想其他可能是问题所在,虽然我不确定是什么,但我可能没有正确插入到 javascript cdn 的链接,尽管我的 $(document).ready(function() 函数正在工作,所以不能就这样(除非准备好的函数不需要 javascript cdn 才能工作)。感谢您的意见,我会继续努力:)
    • 是否有任何控制台错误?也可能值得尝试 console.log 你的 test 变量以确保它正在选择某些东西。如果 &lt;select&gt; 元素尚未呈现(即:如果其他一些 javascript 正在插入它),这将不起作用
    • 我可以成功地在控制台记录我的test 变量,并且我没有收到任何错误,尽管我确实收到了一条消息A cookie associated with a cross-site resource at http://cloudflare.com/ was set without the `SameSite` attribute. A future release of Chrome will only deliver...,我对此非常满意,因为它告诉我javascript cdn 正在工作
    【解决方案2】:

    原来我必须使用以下内容:

    $(document).on('change', '#id_base_module', function(event) {
    

    由于“动态创建的内容”。

    感谢 trincont 在this post 中的回答。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-16
      • 2017-07-24
      • 1970-01-01
      • 2013-12-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多