You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django模板中Chosen.js无法正常显示的问题求助

问题解答:linter-jscs换行提示与Chosen.js在Django中失效问题

一、关于linter-jscs的无效换行提示

  • 这个提示不会导致代码失效:JavaScript对格式的容忍度很高,换行、空格这类问题只会影响代码可读性,完全不会阻碍代码执行。linter-jscs是代码风格检查工具,它的提示只是在帮你规范代码格式,并非语法错误警告。
  • 消除提示的两种方法:
    1. 手动格式化代码,调整成符合JSCS规范的格式,比如:
      $(document).ready(function () {
        $('#id_facilitydimselect').chosen();
      });
      
    2. 若觉得该规范没必要,可修改JSCS配置文件(如.jscsrc),关闭对应的换行检查规则(具体规则名称可看提示信息,比如requireLineFeedAtFileEnd或disallowTrailingWhitespace等)。

二、Chosen.js在Django模板中无法正常显示的核心问题

从你提供的模板代码来看,最关键的错误是select标签的id属性写法错误:
你当前的写法:

<select id_facilitydimselect="Choose a Facility..." class="chosen-select" multiple tabindex="4">

正确写法应该是把id属性设为id="id_facilitydimselect",提示文字用Chosen支持的data-placeholder属性,比如:

<select id="id_facilitydimselect" data-placeholder="Choose a Facility..." class="chosen-select" multiple tabindex="4">

为什么这会导致失效?因为你的初始化代码$('#id_facilitydimselect').chosen()是通过id选择元素的,但原来的select标签根本没有id="id_facilitydimselect"这个属性,jQuery找不到对应的DOM元素,自然无法初始化Chosen插件。

另外补充几个排查点(既然静态资源已加载成功):

  • 确认security_chosen.js里的初始化代码确实在DOM加载完成后执行(你用了$(document).ready,这部分是正确的)。
  • 检查浏览器控制台:如果初始化时找不到元素,控制台会提示类似Cannot read properties of undefined (reading 'chosen')的错误,可验证我们的判断。
  • 规范static标签写法:你写的{% static '/accounts/chosen.jquery.js' %}可去掉开头的斜杠,改成{% static 'accounts/chosen.jquery.js' %},这虽不影响加载,但更符合Django的规范。

内容的提问来源于stack exchange,提问作者student101

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:27:06