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

如何通过jQuery为Django表单生成的文件输入标签添加multiple属性

解决jQuery为Django生成的file input添加multiple属性无效的问题

嘿,我踩过这个坑!你遇到的问题其实是jQuery处理HTML布尔属性的逻辑导致的,几个小调整就能搞定。

首先给你最直接的有效方案——把attr()换成prop()方法:

// 这行代码会生效
$('#id_photo').prop('multiple', true);

为什么之前的代码不生效?

核心在于jQuery中attr()和prop()的定位差异:

  • attr()主要操作HTML标签上的初始属性,对于multiple这种布尔属性,它的逻辑是“存在即生效,不存在即失效”,单纯调用attr('multiple')只是读取属性值,不会主动添加属性。
  • prop()则是操作DOM元素本身的属性,对于布尔属性,设置为true就会让浏览器识别这个属性的存在,从而启用文件多选功能。

如果你非要用attr()的话

也能实现,只是要遵循HTML布尔属性的规范来设置值:

$('#id_photo').attr('multiple', 'multiple');

在HTML语法里,布尔属性可以简写为multiple,也可以写成multiple="multiple",这样设置后标签会正确带上该属性。

最后别忘了一个关键前提!

确保你的jQuery代码是在DOM加载完成后执行的,不然页面还没渲染出#id_photo元素,选择器根本找不到目标,自然不会有效果。推荐把代码放在$(document).ready()里:

$(function() {
    // DOM加载完成后再执行操作
    $('#id_photo').prop('multiple', true);
});

或者直接把脚本放在</body>标签之前,这样页面元素都加载完毕后再执行脚本。

内容的提问来源于stack exchange,提问作者Jay P.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:48:10