如何在 django 模板中的另一个字段中更改后禁用复选框?
Posted
技术标签:
【中文标题】如何在 django 模板中的另一个字段中更改后禁用复选框?【英文标题】:How to disable checkbox after change in another field in django template? 【发布时间】:2018-12-17 13:36:30 【问题描述】:我是初级后端 python 开发人员 (Django),但我必须做“简单”的前端任务。 我认为这很容易,但对我来说并不容易,因为我的前端以 F 结束 :(
我在这个应用程序中使用引导程序。
我有一个包含一些字段的表单字段,其中两个是名为 'checkbox_1' 的复选框 和名为 'price_1' 的价格的数字字段。
True 上的复选框表示“产品是免费的”所以...
如果 checkbox_1 为 True,“price_1”的字段应该被禁用,所以我不能在上面写字。 如果 'price_1' 为 0 且 'checkbox_1' 为 False,则会显示消息“如果产品不是免费的,价格不能为 0”。
我尝试过使用 django 模板使用 if 语句:
<form action="index.html" method="POST">
<div class="form-group">
<label class="control-label"> form.price.label </label>
form.price EUR
</div>
<div class="checkbox m-b-14">
<label> form.free_product <i>/</i> form.free_product.label </label>
<!--AND HERE IS MY TRY-->
% if form.price.value == 0 %
TEST Price 0
% else %
TEST price is bigger than 0
% endif %
</div>
</form>
只有在第一次进入页面后才有效。 我想我必须使用JS?或者也许有可能在 bootstrap 或 django 模板中做到这一点?
即使我的示例可行,我仍然不知道如何在运行时传递“必需”或“禁用”...在您单击复选框的那一刻。
这对我来说是黑魔法,我不知道如何正确搜索它;/
你能帮我在这里做些什么来使它工作吗?
我将非常感激......
【问题讨论】:
是的,你需要 JS。 【参考方案1】:你不能用 django 来做,因为 django 有同步调用......所以你再次得到来自 django 的任何响应,你需要发出一个新请求或刷新你的页面......因为你需要一些动态的东西,你应该使用 javascript这样做。
document.getElementById('yourBox').onchange = function()
document.getElementById('yourText').disabled = !this.checked;
;
<input type="text" id="yourText" disabled />
<input type="checkbox" id="yourBox" />
【讨论】:
感谢您的回答!我应该把这段代码放在哪里?通常在 html 行之间的 html 文件中?它会工作吗?在这个项目中,有一个大文件 app.min.js,其中包含大量功能,但格式错误,因此很难阅读。也许我应该把它放在那里? 你应该得到我的代码并适应你的情况,JS代码应该放在你html的标签中的 不要放在 app.min.js 这是“缩小”文件,这不适合人类阅读...缩小是获取“人类阅读”文件并删除所有空格的操作它更轻巧,因此获得更多性能,您应该创建自己的 javascript 文件... someFile.js 并将您的逻辑放在那里并将其导入您的项目 查看我之前发布的链接并学习 javascript 的基础知识以上是关于如何在 django 模板中的另一个字段中更改后禁用复选框?的主要内容,如果未能解决你的问题,请参考以下文章
当更新同一模型中的另一个特定字段时,如何更新 Django models.DateTimeField?
如何在 django 模板的 forloop 中访问 If 语句中的元组值?